利用Matplotlib绘图时,无法显示中文字体的解决方案

        我在利用Pycharm中的matplotlib库进行绘图的时候,出现了一个问题,当我将所绘的图的横,纵坐标,希望加上一个中文描述的时候,比如,'横坐标','纵坐标'类似这样的描述方法。出现了很多人都会出现的一个问题。

import matplotlib.pyplot as plt


squares = [1, 4, 9, 16, 25]
fig, ax = plt.subplots()
ax.plot(squares, linewidth=3)
#设置图表标题并给坐标轴加上标签。
ax.set_title("主题", size=14)
ax.set_xlabel("横坐标", size=14, color='red')
ax.set_ylabel("纵坐标", size=14, color='red')

ax.tick_params(axis='both', labelsize=14)
plt.show()

结果不出意外成为了这样

最开始以为是我的pycharm软件的语言配置出现了,问题,后来左改一下,右改一下,发现并没有什么作用,喜欢对问题刨根问底的我,查询很多资料发现出现这样的问题是因为Matplotlib库中没有与所输入的中文字符匹配的语言,所以无法正常显示中文,所以在这里把解决方案分享给大家。

pycharm显示的错误如下:

UserWarning: Glyph 32437 (\N{CJK UNIFIED IDEOGRAPH-7EB5}) missing from current font.
  FigureCanvasAgg.draw(self)

解决方式:

首先应该查询一下matplotlib中拥有哪些语言。可以通过以下代码实现:
 

from matplotlib.font_manager import FontManager

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)

然后软件显示结果中我们可以发现一系列包含中文的语言格式,例如Microsoft YaHei,YouYuan等

对于这个问题我就比较疑惑了,既然他有最后却无法成功显示,废话不多说,直接上干货,既然他有这种语言,那么我们在程序里,将他设置成包含中文语言就可以,实现方式如下:
 

import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')

这两行代码,就将显示图片时的语言设置成为了 Microsoft YaHei,也就是我们电脑里面常用的微软雅黑这种字体

运行程序,结果不出所料地显示了中文:

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')

squares = [1, 4, 9, 16, 25]
fig, ax = plt.subplots()
ax.plot(squares, linewidth=3)
#设置图表标题并给坐标轴加上标签。
ax.set_title("主题", size=14)
ax.set_xlabel("横坐标", size=14, color='red')
ax.set_ylabel("纵坐标", size=14, color='red')

ax.tick_params(axis='both', labelsize=14)
plt.show()

结果如下:

参阅文献: https://www.cnblogs.com/houfei/p/13489409.html

 

来源:机器想学习

物联沃分享整理
物联沃-IOTWORD物联网 » 利用Matplotlib绘图时,无法显示中文字体的解决方案

发表评论