解决docker里matplotlib和plotly画图以及保存图片时中文乱码的问题

1. matplotlib画图的问题

问题

在docker容器里启动jupyter后,使用plt画图时中文有乱码。

解决

下载SimHei.ttf

链接:Download Free Font SimHei

然后在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')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值