优雅解决Python中matplotlib绘图时汉字显示不正常的问题
admin 阅读: 2024-03-26
后台-插件-广告管理-内容页头部广告(手机) |
一、问题产生
我们使用了如下代码,为了在图表上绘制中文
- import matplotlib.pyplot as plt
- plt.rcParams['font.sans-serif'] = ['SimHei']
图表最后出现了这种方框形式的错误。
并报了如下错误
findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.二、问题成因
这种报错,实际是一种警告,并不影响程序的正常运行,所以最后也能出效果图,但无法正常显示中文。其实就是matplotlib 库内没有 SimHei 字体,所以需要下载相关文件。
三、解决方法
1.下载SimHei.ttf
下载地址:SimHei.ttf|字体下载 (xiazaiziti.com)
2.拷贝 SimHei.ttf 到 matplotlib 的 font 文件夹
首先找到font所在位置
- import matplotlib
- print(matplotlib.matplotlib_fname())
进入刚刚查找到的这个路径mpl-data文件下,找到 fonts->ttf,将下载的SimHei.ttf字体拷贝到此处。
拷贝成功如下
找到python字体缓存文件
- import matplotlib
- print(matplotlib.get_cachedir())
进入到该文件夹下,删除缓存文件
rm -rf /home/robot/.cache/matplotlib/*后面会自动生成缓存文件,此处已经优雅解决
3.若还没解决
回到步骤2的开头处,找到matplotlibrc路径,修改 matplotlibrc
- font.family : sans-serif
- # 去掉前面的#
- font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
- # 去掉前面的#,并在冒号后面添加SimHei
- axes.unicode_minus : False
- # 去掉前面的#,并将True改为False
四、问题解决
总算显示中文了!!!
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |