痛苦国庆4天假,落泪
今天写实验的时候,发现在 colab 中使用 matplotlib 无法显示中文,一开始以为是忘记切换 matplotlib 默认字体的锅,结果一看 colab 底层的 Ubuntu 压根就没有中文字库,整活了半天总算解决了,这里记录一下解决方法
解决方法
- 下载支持中文的字体,如 SimHei.ttf
- 将 .ttf 或者 .otf 后缀的字体文件上传至 colab 存储空间中
- 你可以直接在 cell 里 wget 也可以将文件也直接拖动到页面左边的存储目录,或者可以试试在 cell 里运行下面这段代码,道理是一样的
from google.colab import files
files.upload()
- 将你的字体文件移动到 /usr/share/fonts/truetype (Ubuntu默认字体目录)中
- 然后在 cell 中引用
import matplotlib.font_manager as fm
path = '/usr/share/fonts/truetype/SimHei.ttf'
fontprop = fm.FontProperties(fname=path, size=13)
- 最后在 legend 和 title 等需要显示中文的地方选择字体即可
示范样例
安装
!wget "https://www.wfonts.com/download/data/2014/06/01/simhei/simhei.zip"
!unzip "simhei.zip"
!mv SimHei.ttf /usr/share/fonts/truetype/
调用
import matplotlib.font_manager as fm
path = '/usr/share/fonts/truetype/SimHei.ttf'
fontprop = fm.FontProperties(fname=path, size=13)
使用
plt.legend(['第一产业','第二产业','第三产业'], prop=fontprop)
plt.xlabel('年份', fontproperties=fontprop)## 添加y轴标签
plt.ylabel('生产总值(亿元)', fontproperties=fontprop)## 添加y轴标签
plt.title('2000-2017年各产业季度生产总值折线图', fontproperties=fontprop)
注意:legend使用的是prop
,而title和两个坐标轴标签均使用fontproperties