背景:jupyter notebook运行在CentOS/RedHat服务器上,而服务器上未安装中文字体,导致画图乱码。

解决方案:在CentOS/RedHat服务器上安装中文字体,并在jupyter notebook上指定使用的ttf文件路径。
步骤:
1. 在CentOS/RedHat服务器上安装中文字体
以SimHei字体为例,下载SimHei.ttf,或在windows上的"C:\Windows\Fonts"路径中找到SimHei对应的ttf文件。
在终端用 "sz -Z {filename}" 命令传输到服务器上,可新建my_fonts文件夹用于保存新的字体:
mkdir /usr/share/fonts/my_fonts
cd /usr/share/fonts/my_fonts
sz -Z SimHei.ttf
chmod 777 SimHei.ttf
查看并安装字体
使用"fc-list :lang=zh"查看中文字体,未安装的时候无返回内容
![]()
安装命令如下:
mkfontscale
mkfontdir
fc-cache
fc-list :lang=zh
ls
返回值内容中给出了路径"/usr/share/fonts/my_fonts/SimHei.ttf",同时多了.dir和.scale文件,安装成功:

2. 在jupyter notebook上指定使用的ttf文件路径
在ipynb文件中,使用matplotlib的font_manager指定使用的字体:
import matplotlib.pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/usr/share/fonts/my_fonts/SimHei.ttf", size=16)
绘图时,使用"font=my_font"参数指定使用的字体,如:
x = list(range(2015, 2023))
y_raw = [206267684,
311725419,
408625085,
474568785,
599127131,
863154486,
998821684,
1260094825]
y = [i / 100000000 for i in y_raw]
ax = plt.gca()
for i in ['top', 'right']:
ax.spines[i].set_visible(False)
plt.plot(x, y, marker='o', markersize=10)
plt.title("历年GitHub事件数据量统计", font=my_font) # 使用font=my_font指定字体
plt.xlabel("年份", font=my_font)
plt.ylabel("事件数据数量(亿条)", font=my_font)
plt.grid(alpha=0.2)
plt.savefig('./历年GitHub事件数据量统计.png')
plt.show()
结果:

文章介绍了如何在CentOS/RedHat服务器上安装中文字体SimHei,以解决JupyterNotebook显示中文图表时的乱码问题。通过下载ttf文件,将其传至服务器,创建字体目录,安装字体,并在JupyterNotebook中使用matplotlib的font_manager指定字体路径,从而确保绘图时正确显示中文。

437

被折叠的 条评论
为什么被折叠?



