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

Rhea ·
更新时间:2024-11-10
· 1688 次阅读

目录

发现问题

解决方式:

总结

发现问题

我在利用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.jb51.net/article/246372.htm

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

总结

到此这篇关于Python利用Matplotlib绘图无法显示中文字体的解决方案的文章就介绍到这了,更多相关Matplotlib绘图无法显示中文内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



字体 matplotlib 解决方案 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号