前段时间和齐老师(公众号:老齐教室)共同解决了aistudio中matplotlib关于中文显示的问题。
- 全局支持中文显示以及指定局部中文显示
https://aistudio.baidu.com/aistudio/projectdetail/390895
- 使用中还有问题可以在论坛中提出(你的问题可能大家已经讨论过了)
https://ai.baidu.com/forum/topic/show/958873
考虑到部分同学对matplotlib本身不是太熟悉,本文按照局部指定字体的方法汇总了各种图的案例,方便大家使用。
感谢doubi渣渣同学提出的问题。
本文以2020.04.29日国内现有新型冠状肺炎确诊病例top10省份的数据为例。
准备
python
# 导入包以及配置中文
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
# simhei.ttf的可以替换任意中文ttf字体,注意路径正确
font = FontProperties(fname='simhei.ttf', size=16)
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False
柱状图
python
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
# 横坐标城市名称
x = ['黑龙江','香港','台湾','上海','内蒙古','陕西','北京','山西','广东','澳门']
# 当日现有确诊数
y = [339, 222, 116, 54, 52, 50, 46, 37, 26, 12]
plt.bar(x,y,width=0.5)
# 标题
plt.title('2020.04.29现有确诊数top10', fontproperties=font)
# 横坐标标签
plt.xlabel('top10城市', fontproperties=font)
# 中坐标标签
plt.ylabel('现有确诊数', fontproperties=font)
# 做坐标刻度
plt.xticks(x, fontproperties=font)
plt.show()
饼图
python
# 生成画布
plt.figure(figsize=(10, 6), dpi=80)
# 横坐标城市名称
labels = ['黑龙江','香港','台湾','上海','内蒙古','陕西','北京','山西','广东','澳门']
# 当日现有确诊数
sizes = [339, 222, 116, 54, 52, 50, 46, 37, 26, 12]
explode = np.linspace(0, 0.4, 10)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=-45, textprops={'fontproperties':font})
plt.title("2020.04.29现有确诊数top10城市占比", fontproperties=font)
# 图例
plt.legend(loc='right', bbox_to_anchor=[0.75, 0.4, 0.5, 0.5], prop=font)
plt.show()