CentOS/RedHat上运行的jupyter notebook执行matplotlib.pyplot.plot函数画图时,中文乱码的一种解决方案

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

背景: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()

结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bird_fly_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值