一、问题产生
我们使用了如下代码,为了在图表上绘制中文
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
四、问题解决
总算显示中文了!!!文章来源:https://www.toymoban.com/news/detail-857743.html
文章来源地址https://www.toymoban.com/news/detail-857743.html
到了这里,关于优雅解决Python中matplotlib绘图时汉字显示不正常的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!