您现在的位置是:首页 > 技术教程 正文

优雅解决Python中matplotlib绘图时汉字显示不正常的问题

admin 阅读: 2024-03-26
后台-插件-广告管理-内容页头部广告(手机)

一、问题产生

我们使用了如下代码,为了在图表上绘制中文

  1. import matplotlib.pyplot as plt
  2. 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所在位置

  1. import matplotlib
  2. print(matplotlib.matplotlib_fname())

进入刚刚查找到的这个路径mpl-data文件下,找到 fonts->ttf,将下载的SimHei.ttf字体拷贝到此处。

拷贝成功如下

找到python字体缓存文件

  1. import matplotlib
  2. print(matplotlib.get_cachedir())

进入到该文件夹下,删除缓存文件

rm -rf /home/robot/.cache/matplotlib/*

后面会自动生成缓存文件,此处已经优雅解决

3.若还没解决

回到步骤2的开头处,找到matplotlibrc路径,修改 matplotlibrc

  1. font.family : sans-serif
  2. # 去掉前面的#
  3. font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
  4. # 去掉前面的#,并在冒号后面添加SimHei
  5. axes.unicode_minus : False
  6. # 去掉前面的#,并将True改为False

四、问题解决

总算显示中文了!!!

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜