方法一:
1. 添加SimHei字体(simhei.ttf文件)
到/Users/rise/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/(下载地址:黑体字体simhei.ttf)
2. 删除~/.matplotlib/下的所有缓存文件
rm -rf ~/.matplotlib/*.cache
3. 删除~/.matplotlib/下的fontList.json
rm -f ~/.matplotlib/fontList.json
4. 添加代码
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置加载的字体名
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
方法二:
1. 导包
from matplotlib.font_manager import FontProperties
2. 添加代码
def get_chinese_font():
return FontProperties(fname='/System/Library/Fonts/PingFang.ttc')
然后哪个地方用到中文了,就添加fontproperties=get_chinese_font(),如下:
plt.figure()
# alpha为透明度,加label是为了使用legend
plt.bar(bar_locs, member_mean_duration_list, width=bar_width, color='g', alpha=0.7, label='会员')
# 这个柱子一定要加偏移量,否则会和第一组柱子重合
plt.bar(bar_locs+bar_width, casual_mean_duration_list, width=bar_width, color='r', alpha=0.7, label='非会员')
# 默认刻度都是在第一组的柱子上,现在我们调整到两组柱子的中间, 并用自定义值替换
plt.xticks(bar_locs + bar_width / 2, xtick_labels, rotation=45, fontproperties=get_chinese_font())
plt.ylabel('平均骑行时间(单位:分钟)', fontproperties=get_chinese_font())
plt.title('柱状图', fontproperties=get_chinese_font())
plt.legend(loc='best', prop=get_chinese_font())
plt.tight_layout()
plt.savefig(os.path.join(output_path, 'group_bar_chart.png'))
plt.show()