痛苦国庆4天假,落泪

今天写实验的时候,发现在 colab 中使用 matplotlib 无法显示中文,一开始以为是忘记切换 matplotlib 默认字体的锅,结果一看 colab 底层的 Ubuntu 压根就没有中文字库,整活了半天总算解决了,这里记录一下解决方法

wtf

解决方法

  • 下载支持中文的字体,如 SimHei.ttf
  • 将 .ttf 或者 .otf 后缀的字体文件上传至 colab 存储空间中
    • 你可以直接在 cell 里 wget 也可以将文件也直接拖动到页面左边的存储目录,或者可以试试在 cell 里运行下面这段代码,道理是一样的

from google.colab import files
files.upload()

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

参考

Last modification:December 29th, 2021 at 11:41 am
如果觉得我的文章对你有用,请随意赞赏