matplotlib 中文乱码 & 字体库无中文字体问题

       

目录

问题1:matplotlib中文乱码

问题2:matplotlib 反馈没有 'SimHei'

STEP1(LINUX 安装中文字体): 

STEP2(更新matplotlib缓存):


问题1:matplotlib中文乱码

默认字体无法正常显示中文,需要更换字体,此处更换字体为SimHei:

 参考:Matplotlib中文乱码的3种解决方案_python_脚本之家

import matplotlib
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

附一些命令:

查看matplotlib的配置文件:matplotlib.matplotlib_fname(),一般是 matplotlibrc,类似bashrc
查看matplotlib的缓存地址:matplotlib.get_cachedir(),一般为 ~/.cache/matplotlib/

问题2:matplotlib 反馈没有 'SimHei'

查看matplotlib的字体有没有中文字体:matplotlib.font_manager.get_font_names()

发现字体库里没有SimHei字体,因为原Linux环境里没有SimHei。因此需要先在系统中安装中文字体(STEP1),再更新matplotlib缓存(STEP2)

STEP1(LINUX 安装中文字体): 

参考 Linux安装中文字体库,让中文界面更美观 | 《Linux就该这么学》

1. windows/fonts字体库里找到中文字体,例如SimHei
2. mkdir /usr/share/fonts/chinese
将中文字体复制到/usr/share/fonts/chinese
3. fc-cache -f -v
更新字体缓存
4. fc-list :lang=zh-cn
检查是否安装成功

STEP2(更新matplotlib缓存):

matplotlib.get_cachedir()获取缓存地址,再删除 缓存文件夹中的 fontlist***
若是jupyter notebook 则需要再重启Kernel,才会更新缓存

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于matplotlib中文乱码问题,可以按照以下步骤进行解决: 1. 安装字体库:首先,您可以下载并安装支持中文字体库,比如SimHei或者Microsoft YaHei。可以从官方网站或者其他可信来源下载字体文件,并将其安装到系统中。 2. 配置matplotlib:接下来,您需要在代码中配置matplotlib来使用已安装的中文字体。可以通过以下代码示例来实现: ```python import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # 指定字体文件路径 font_path = 'path/to/font/file.ttf' # 加载字体文件 font = FontProperties(fname=font_path) # 设置全局字体为中文字体 plt.rcParams['font.family'] = font.get_name() # 绘制图表的代码 # ... # 显示图表 plt.show() ``` 在上述代码中,您需要替换`font_path`为您安装的字体文件的路径。然后,通过`FontProperties`类加载字体文件,并通过`plt.rcParams['font.family']`设置全局字体为中文字体。 3. 保存为图片(可选):如果您需要将图表保存为图片文件,并确保其中的中文乱码,可以使用如下代码: ```python # 保存图片 plt.savefig('path/to/save/image.png', dpi=300, bbox_inches='tight', transparent=True) ``` 在上述代码中,您需要替换`path/to/save/image.png`为您想要保存图片的路径。通过设置`dpi`参数可以调整图片的分辨率,使用`bbox_inches='tight'`可以自动裁剪空白边缘,使用`transparent=True`可以设置背景为透明。 通过以上步骤,您应该能够解决matplotlib中文乱码问题。希望能对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值