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')