脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

2022-12-09 11:21田宇 Python

Matplotlib绘制图像显示中文的时候,中文会变成小方格子,下面这篇文章主要给大家介绍了关于如何彻底解决Python中matplotlib不显示中文问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

在很长一段时间里用Python绘图,matplotlib都不能很好的显示中文,起初是认为我的pycharm里的设置问题,但是发现同样的问题在spyder里也同样的出现了,虽然有的地方可以用英文实在不行用拼音。。。但是在作图这里没有中文真的是太不方便了,机缘巧合下在年前终于找到问题的根源了,于是乎爱刨根问底儿的我把整个过程的解决方法分享给大家~~

一共有两种解决方案,我强烈推荐第一种,因为更为方便,绘图时不用再写别的参数,调用一次即可,第二种方法也会写出来但是更多的是作为了解,主要因为相比之下太麻烦

 

方法一:

示例:绘制每月的商品数量

  • X轴月份显示为中文
  • 增加X轴Y轴中文,图标标题
from matplotlib import pyplot as plt
a = ["一月份","二月份","三月份","四月份","五月份","六月份"]
b=[56.01,26.94,17.53,16.49,15.45,12.96]
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(a)),b)

#绘制x轴
plt.xticks(range(len(a)),a)
plt.xlabel("月份")
plt.ylabel("数量")
plt.title("每月数量")
plt.show()

不出意外绘制出来的图是这样的。。。。。

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

绘制出来的图片,在所有应该显示为中文的地方均显示乱码

之前一直以为是系统中字符集支持的问题,其实并不是这样,根本原因是matplotlib内置的原因,直到我知道了matplotlib.rc这个方法,其实这个我也不太会用,那么我们看一下这个的源码写的是该如何使用(学会看源码真的很重要!!)

首先它肯定是能设置字体和颜色的,有关字体我们怎么设置呢?我们接着往下看

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

有关字体的设置找到了,可以接收为字典,它利用了**font接收了一下字典,其实我们我们完全可以一行搞定,当然我更喜欢横着写,例如下面这样其实也是OK的~~

matplotlib.rc("font",family='MicroSoft YaHei',weight="bold")

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

那么我们加入这行代码在跑一下试试

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

果不其然产生了一个报错,那么我们为什么把MicroSoft YaHei(这个不就是微软雅黑吗,电脑里都有啊)这个加进去会报错呢?

重点来了

其实报错只有一个原因就是他没有这个字体,虽然电脑里有这个字体但是不代表matplotlib里也有这个字体,所以解决matplotlib中的中文显示问题主要就是要找到它所内置支持的字体,那么我们首先查看一下它的内置字体,运行以下代码查看所支持的字体

# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
import subprocess
mpl_fonts = set(f.name for f in FontManager().ttflist)
print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
  print('\t' + f)

运行后他会显示出所有支持的字体,大约100多种。。。。具体的我就不一一列举了

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

但是你会发现这个都是英文字体啊,中文字体在哪里,其实我当时也非常困扰,但是细心的我发现了其中的奥秘,>>>其实他是有中文的只不过是用拼音写的....<<<

其中你会发现有如下字体:

  • DengXian
  • FangSong
  • KaiTi
  • LiSu
  • YouYuan
  • Adobe Fan Heiti Std
  • Adobe Fangsong Std
  • Adobe Heiti Std
  • Adobe Kaiti Std

其实这些都是中文啊啊啊啊啊啊~~~~激动的我把代码增加一行再试试,随便选了个字体

from matplotlib import pyplot as plt
#新增加的两行
import matplotlib
matplotlib.rc("font",family='YouYuan')

a = ["一月份","二月份","三月份","四月份","五月份","六月份"]
b=[56.01,26.94,17.53,16.49,15.45,12.96]
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(a)),b)

#绘制x轴
plt.xticks(range(len(a)),a)
plt.xlabel("月份")
plt.ylabel("数量")
plt.title("每月数量")
plt.show()

如何彻底解决Python中matplotlib不显示中文的问题详解(显示方框)

完美支持,也就是增加了两行代码就解决了中文的显示问题,归根到底还是很多没没有找到matplotlib所支持的内置字体方法,或是找到了不知道怎么用

 

方法二:

找到字体的所在路径

from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

但是他有一个弊端就是在每个图上都需要在多家个参数调用才行,否则的话就会显示不出来

plt.xticks(range(len(a)),a,fontproperties=my_font)

plt.xlabel("月份",fontproperties=my_font)
plt.ylabel("数量",fontproperties=my_font)
plt.title("每月数量",fontproperties=my_font)

 

总结

到此这篇关于如何彻底解决Python中matplotlib不显示中文问题的文章就介绍到这了,更多相关Python matplotlib不显示中文内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://zhuanlan.zhihu.com/p/104081310

延伸 · 阅读

精彩推荐
  • Pythonpython3+PyQt5实现文档打印功能

    python3+PyQt5实现文档打印功能

    这篇文章主要为大家详细介绍了python3+PyQt5实现文档打印功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    basisworker12142021-02-05
  • PythonPython性能分析工具pyinstrument提高代码效率

    Python性能分析工具pyinstrument提高代码效率

    今天分享一个超级实用的 Python 性能分析工具 pyinstrument ,可以快速找到代码运行最慢的部分,帮助提高代码的性能。支持 Python 3.7+ 且能够分析异步代码,...

    somenzz11002022-01-05
  • Python在Python中处理列表之reverse()方法的使用教程

    在Python中处理列表之reverse()方法的使用教程

    这篇文章主要介绍了在Python中处理列表之reverse()方法的使用教程,是Python入门中的基础知识,需要的朋友可以参考下 ...

    Python教程网6962020-07-04
  • PythonPython实现iOS自动化打包详解步骤

    Python实现iOS自动化打包详解步骤

    这篇文章主要介绍了Python实现iOS自动化打包详解步骤,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    Qinz11002021-04-05
  • Python一篇文章带你了解Python中的游戏开发模块pyglet

    一篇文章带你了解Python中的游戏开发模块pyglet

    pyglet 还有很多好玩的例子,比如canvas画图,不过相比较我说的几点,还是会显得比较无趣些,希望以上的内容能帮助你快速开发一个实用型应用程序。...

    Python爬虫与数据挖掘9662021-05-06
  • Pythonpython通过PyQt5实现登录界面的示例代码

    python通过PyQt5实现登录界面的示例代码

    本文主要介绍了python通过PyQt5实现登录界面的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Python研究者11522021-12-25
  • Pythonpython实现PolynomialFeatures多项式的方法

    python实现PolynomialFeatures多项式的方法

    这篇文章主要介绍了python实现PolynomialFeatures多项式的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    Dream-YH7252021-08-22
  • Python多版本Python共存的配置方法

    多版本Python共存的配置方法

    本文给大家分享的是由于工作需求,要求PC中安装python2和python3的开发环境。那么我们应该如何操作呢,下面我们就来探讨下。...

    大牧莫邪5422020-11-10