Matplotlib中文乱码的3种解决方案

  

  

Matplotlib是一个Python 2 d绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形。Matplotlib可用于Python脚本,Python和IPython shell, Jupyter笔记本,网络应用程序服务器和四个图形用户界面工具包。

  

然而最近在使用matplotlib默认情况会出现乱码问题,原则上matplotlib是支持中文的,只是在配置信息里没有中文字体的相关信息。

  

  

<>强解决方案一:修改配置文件
  

  

matplotlib从配置文件matplotlibrc中读取配置,字体相关内容也在其中。查询当前matplotlibrc所在目录,可以用get_configdir()函数:

        进口matplotlib   matplotlib.get_configdir ()      

通常存放位置:lib \网站\ matplotlib \ mpl-data \ matplotlibrc

  

涉及到字体部分的设置内容为:

        #字体。家庭:无衬线   #字体。风格:正常   #字体。变体:正常   #字体。重量:正常   #字体。延伸:正常   # #注意字体。默认文本大小尺寸控制。配置   # #特殊文本大小蜱虫标签、斧头、标签、标题,等看到rc   # #设置轴和蜱虫。特殊文本大小可以被定义   # #相对于字体。大小,使用以下值:xx-small x-small,   # #小、中、大,从小到大,xx-large更大或更小   #字体。大小:10.0   #字体。衬线:DejaVu衬线、比特流维拉衬线、计算机现代罗马,新世纪的教科书,世纪教科书L,乌托邦,ITC书店,书店,灵气罗马号L, Times New Roman, Palatino,宪章,衬线   #字体。无衬线:DejaVu Sans、比特流Vera Sans、计算机现代无衬线字体,明星Grande, Verdana,日内瓦,清醒,Arial, Helvetica,前卫的,无衬线   #字体。草书:苹果档案馆、纺织、Zapf衡平法院,沙子,脚本太,菲利帕,草书   #字体。幻想:Comic Sans MS,芝加哥、木炭、ImpactWestern,幽默无,xkcd,幻想   #字体。等宽字体:DejaVu Sans Mono,比特流Vera Sans Mono计算机现代打字机,Andale Mono,灵气Mono L,快递,快递,固定的,终端,单一间隔      

matplotlib默认使用的字体。家庭是无衬线,即无衬线字体,可以看到在font.sans-serif中设置的全部为西文字体,这里的设置和css样式文件中设置差不多,只需要添加系统存在的字体名称即可(需要注意的是,matplotlib:

  

只支持ttf格式的字体),设置时需要将注释符号#去除。

  

<>强解决方案二:重载配置文件
  

        进口matplotlib mpl   mpl.rcParams['字体。无衬线']=[' SimHei ')   mpl.rcParams['字体。衬线']=[' SimHei ')   mpl.rcParams['轴。unicode_minus ']=False #解决保存图像是负号”——“显示为方块的问题,或者转换负号为字符串      

<>强解决方案三:自定义字体

        进口numpy np   进口pylab pl   进口matplotlib。font_manager作为调频      myfont=fm.FontProperties(?r会:\字体\ simkai.ttf”) #设置字体   t=np.arange (0.0、2.0 * np.pi 0.01) #自变量取值范围   s=np.sin (t) #计算正弦函数的值   z=np.cos (t) #计算余弦函数的值   pl.plot (t, s,标签='正弦”)   pl.plot (t, z,标签='余弦”)   pl.xlabel (“x -变量”,fontproperties=myfont字形大?24)#设置标签   pl.ylabel (y -正弦余弦函数的值,fontproperties=myfont字形大?24)   pl.title (“sin-cos函数图像,fontproperties=myfont字形大?32)#图像标题   pl.legend(道具=myfont)   pl.show ()      

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

Matplotlib中文乱码的3种解决方案