在Matplotlib中, 无法显示中文, 需要修改配置文件.
1. 检查中文字体
在Focus Search (聚焦搜索)中, 搜索"font", 进入字体册, 选择合适的字体集.
字体如"黑体-简", 右键在"Folder (访达)"中显示, 选择粗体(Medium), 获取路径.
字体文件复制路径"option + command + c"
/System/Library/Fonts/STHeiti Medium.ttc
2. 修改Matplotlib配置
查看matplotlib的配置路径:
import matplotlib
print matplotlib.matplotlib_fname() # 将会获得matplotlib包所在文件夹
路径:
/Users/xxxx/.matplotlib
修改配置中的字体文件fontList.json. 在ttflist列表中, 添加"Heiti"的中文字体集.
"ttflist": [
{
"style": "normal",
"name": "Heiti",
"weight": 400,
"fname": "/System/Library/Fonts/STHeiti Medium.ttc",
"stretch": "normal",
"_class": "FontEntry",
"variant": "normal",
"size": "scalable"
},
...
查看matplotlib支持的字体集.
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
print i
"Heiti"字体集设置完成!
3. 使用字体集
设置font.family域为Heiti.
plt.rcParams['font.family'] = ['Heiti']
线图, 标签(label)和标题(title)使用中文, 注意unicode.
t = np.arange(0.0, 2.0, 0.01) # 值得范围 0.0~2.0
s = 1 + np.sin(2 * np.pi * t) # y = 1 + sin(2*Pi*x), 范围页是0~2
fig, ax = plt.subplots() # 图像fig和轴ax
ax.plot(t, s) # 设置x轴和y轴
ax.set(xlabel=u'时间(秒)', ylabel=u'电压(mV)',
title=u'线图') # x轴文字, y轴文字, 标题
ax.grid() # 网格
print tmp_wrapper("demo_1.png")
fig.savefig(tmp_wrapper("demo_1.png")) # 存储图片
plt.show() # 显示
显示
中文图完美显示, Perfect!!!
网友评论