python中没有matplotlib,matplotlib不支持中文

  python中没有matplotlib,matplotlib不支持中文

  当Matplotlib绘制一个图像来显示中文时,中文会变成一个小小的正方形网格。以下文章主要介绍如何彻底解决Python中matplotlib不显示中文的问题的相关信息。通过示例代码非常详细的介绍,有需要的朋友可以参考一下。

  00-1010介绍方法1:方法2:总结

  

目录

  长期以来,使用Python画图,matplotlib无法很好的显示中文。一开始我以为是我pycharm里的设置有问题,但是我发现同样的问题也出现在spyder里,虽然有些地方可以用英文,但是不能用拼音。但是,在这里画画没有中文真的很不方便。一个偶然的机会,我终于在年前找到了问题的根源,所以喜欢提问,把整个过程的解决方法分享给大家~ ~

  有两种解决方案。我强烈推荐第一种,因为更方便。画图时不需要写其他参数。可以只调用一次,第二种方法会写出来,但更多是为了理解,主要是和它比起来太麻烦了。

  

前言

  例如:画出每月的货物数量

  X轴月份显示中文,添加X轴Y轴中文,图标标题来自matplotlib导入py图为PLT。

  A=[一月,二月,三月,四月,五月,六月]

  b=[56.01,26.94,17.53,16.49,15.45,12.96]

  plt.figure(figsize=(20,8),dpi=80)

  plt.bar(范围(len(a)),b)

  #画出x轴

  plt.xticks(range(len(a)),a)

  Plt.xlabel(月)

  Plt.ylabel(数量)

  工厂名称(“每月数量”)

  plt.show()

  不出意外,画出来的图是这样的。

  绘制的图片显示了所有应该用中文显示的地方的乱码。

  我一直以为是系统中字符集支持的问题,其实不是。根本原因是matplotlib的内置,直到我知道matplotlib.rc的方法其实我不太会用这个,所以我们来看看这个的源码,里面讲了怎么用(学会看源码真的很重要!)

  首先,它绝对可以设置字体和颜色。我们如何设置字体?我们继续往下看。

  字体设置已经找到了,可以当字典收了。它使用* *字体来接收字典。其实一行就可以了。当然,我更喜欢横着写。比如下面这个其实也可以~ ~

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

  那我们就加入这行代码,试一试。

  果然有错误,那么为什么我们添加微软雅黑(这个不是微软雅黑吗,电脑里都有)的时候报错呢?

  重点来了。

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

  #查询当前系统中的所有字体

  从matplotlib.font_manager导入FontManager

  导入子流程

  mpl _ fonts=set(f . name for f in font manager()。ttflist)

  print(从matplotlib.font_manager:获取所有字体列表)

  对于f in sorted(mpl_fonts):

  打印( \t f)

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

  但是你会发现这些都是英文字体,中文字体呢?其实我当时也很困扰,但是我仔细才发现其中的奥妙。其实他是中文的,只是用拼音写的。

  <

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

  

  • 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()

  

  完美支持,也就是增加了两行代码就解决了中文的显示问题,归根到底还是很多没没有找到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不显示中文问题的文章就介绍到这了,更多相关Pythonmatplotlib不显示中文内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: