解决docker里matplotlib和plotly画图以及保存图片时中文乱码的问题
解决docker里jupyter中文乱码的问题
·
1. matplotlib画图的问题
问题
在docker容器里启动jupyter后,使用plt画图时中文有乱码。
解决
下载SimHei.ttf
然后在jupyter里运行如下代码,获取要放置simhei.ttf的目录
import matplotlib as mpl
d0 = mpl.matplotlib_fname()
d1=d0.replace('matplotlibrc', 'fonts/ttf')
print('1. 将SimHei.ttf放到如下目录:\n%s' % d1)
print('2. 清空缓存目录:\n%s' % (mpl.get_cachedir()))
print('3. 修改配置文件:%s' % d0)

修改配置文件 matplotlibrc:
将一下三句修改,并将 # 去掉:
font.family : sans-serif ... font.sans-serif : SimHei ... axes.unicode_minus : False # use unicode for the minus symbol


2. plotly离线保存图片中文乱码的问题
中文乱码背后的原因都一样,都是因为找不到字体(ttf)文件。
正如上面解决matplotlib的画图问题一样,都需要将字体文件(如simhei.ttf)放到一个合适的目录,我用的是docker,具体方法见下面chatgpt的回答:

保存图像的时候需要设置font参数,还是参考gpt的问答吧,实在是太优秀了:
import plotly.graph_objs as go
from plotly.offline import plot
# 设置字体
font = dict(family='Microsoft YaHei', size=18)
# 创建数据和布局
trace = go.Scatter(x=[1, 2, 3], y=[4, 5, 6])
layout = go.Layout(title='示例图', font=font, xaxis=dict(title='横坐标', font=font),
yaxis=dict(title='纵坐标', font=font))
# 绘制图形
fig = go.Figure(data=[trace], layout=layout)
plot(fig, filename='example.html', auto_open=False)
# 将图片保存为 png 格式
fig.write_image('example.png')
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)