在使用matplotlib进行可视化时,一个令人头疼的问题就是如何正确的显示中文,有时你百度后各种尝试,可能遇到中文还是显示一堆无效的框框,那么本文就将提供三种解决办法,希望能够帮助到大家。
首先我们需要知道,为什么中文不能被正确显示?比如你使用plt.title('可视化图鉴')
添加中文标题,matplotlib在输出文字时就去当前的字体文件中去查找这几个字,但是很遗憾没有找到。
所以本质上就是matplotlib的中文字体文件没有被正确设置。在下面给出的三个解决办法中,我不能确保一定能对你的电脑生效(毕竟有些时候因为环境导致的差异确实很麻烦),但是只要你清晰了解决思路(让matplotlib正确找到中文字体文件),一定能搞定!
一、麻烦但一定能解决的办法
首先给出的是一个99%概率能让你正确显示中文的方法,但不是一劳永逸的办法,所以略显麻烦。
上面我们说了,之所以不能输出中文,就是因为matplotlib找不到中文字体文件,怎么办?我们就强制指定一个中文字体文件,按住matplotlib的头,让他遇到中文就读取这个字体。
比如我们先下载一个想要的中文字体文件,比如微软雅黑吧,下载到本地并复制它的绝对路径,然后使用font_manager.FontProperties
读取这个字体,定义为WRYH
`import matplotlib.pyplot as plt
import matplotlib as mpl
WRYH = mpl.font_manager.FontProperties(fname = '/opt/python_env/py_39_op/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf') # SimHei字体
`
之后在需要输出中文的地方,添加fontproperties = WRYH
即可使用我们刚刚读取的中文字体,比如设置中文标题
`plt.title('可视化图鉴',fontproperties = WRYH)
`
中文正确出来了有没有!理论上这个办法无视环境,不论Mac还是Win下,只要你的中文字体文件路径没有问题,一定能把中文显示出来。
但是正如标题所说的:麻烦,只要需要输出中文,你就要加上fontproperties = WRYH
这么一句话,如果要设置标题、图例、坐标轴、注释等多个中文的话,那么每制作一张图就需要复制粘贴很多次,工作量就上去了。
所以这个方法适用于紧急使用或者在非常用电脑下,没空折腾其他方法时使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。