Matplotlib中文乱码怎么解决(matplotlib,开发技术)

时间:2024-04-29 18:03:25 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

Matplotlib中文乱码

当不对 Matplotlib 进行设置,而直接使用中文时,绘制的图像会出现中文乱码。下面是一个含有中文乱码的折线图:

Matplotlib中文乱码怎么解决

从上图可以看出,本应该显示在红框内的中文字体没有显示出来(红框是自己标注出来的),下面给出了两种解决方案:第一种是临时解决方案,第二种是一劳永逸的解决方案。

重写配置文件

通过临时重写配置文件的方法,可以解决 Matplotlib 显示中文乱码的问题,代码如下所示:

importmatplotlib.pyplotaspltplt.rcParams["font.sans-serif"]=["SimHei"]#设置字体plt.rcParams["axes.unicode_minus"]=False#该语句解决图像中的“-”负号的乱码问题

将上述代码添加到您的绘图程序中,即可解决中文乱码的问题。这是一种非常灵活、便捷的解决方法。完整的程序代码如下:

#绘制折线图importmatplotlib.pyplotaspltplt.rcParams["font.sans-serif"]=["SimHei"]#设置字体plt.rcParams["axes.unicode_minus"]=False#正常显示负号year=[2017,2018,2019,2020]people=[20,40,60,70]#生成图表plt.plot(year,people)plt.xlabel('年份')plt.ylabel('人口')plt.title('人口增长')#设置纵坐标刻度plt.yticks([0,20,40,60,80])#设置填充选项:参数分别对应横坐标,纵坐标,纵坐标填充起始值,填充颜色plt.fill_between(year,people,20,color='green')#显示图表plt.show()

输出结果如下:

Matplotlib中文乱码怎么解决

不过上述解决方案适用于所有操作系统,其唯一弊端是每编写一个绘图程序就要添加一次相同的代码。

修改配置文件

下面介绍第二种方式:通过直接修改配置文件的方法,可以一劳永逸的解决 Matplotlib 的中文乱码问题。注意此过程在 Windows 环境下进行。

Matplotlib 从配置文件 matplotlibrc 中读取相关配置信息,比如字体、样式等,因此我们需要对该配置文件进行更改。首先查看 matplotlibrc 所在的目录,使用如下代码确定目录位置:

importmatplotlibmatplotlib.matplotlib_fname()

输出结果:

D:\python\python37\lib\site-packages\matplotlib\mpl-data\matplotlibrc

然后修改配置文件 matplotlibrc。打开配置文件后,找到以下信息:

#font.family:sans-serif
#font.serif:DejaVuSerif,BitstreamVeraSerif,ComputerModernRoman,NewCenturySchoolbook,CenturySchoolbookL,Utopia,ITCBookman,Bookman,NimbusRomanNo9L,TimesNewRoman,Times,Palatino,Charter,serif

将上述配置项前面的#去掉,并修改的配置项,如下所示:

font.family:MicrosoftYaHei,sans-seriffont.serif:MicrosoftYaHei,DejaVuSerif,BitstreamVeraSerif,ComputerModernRoman,NewCenturySchoolbook,CenturySchoolbookL,Utopia,ITCBookman,Bookman,NimbusRomanNo9L,TimesNewRoman,Times,Palatino,Charter,serif

注意,由于版本问题,上述内容配置信息可能存在一些差异,请自动忽略。

最后,在以下目录中复制中文字体微软雅黑:

C:\Windows\Fonts\Microsoft YaHei UI

复制完成后,将字体粘贴至以下路径文件中:

D:\python\python37\lib\site-packages\matplotlib\mpl-data\fonts\ttf

字体粘贴后会出现一个 MSYH.ttc 的字体文件,如下所示:

Matplotlib中文乱码怎么解决

编写如下代码进行测试:

importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-8,8,1024)y1=0.618*np.abs(x)-0.8*np.sqrt(64-x**2)y2=0.618*np.abs(x)+0.8*np.sqrt(64-x**2)plt.plot(x,y1,color='r')plt.plot(x,y2,color='r')plt.title("测试",fontsize=20,color="b")plt.show()

如果你对自己编写的程序没有强烈的“洁癖”,可以接受重复的代码,那么建议您选择第一种解决方法,因为这种方法灵活、轻便。当然您也可以选择第二种方式,一劳永逸的解决中文乱码问题。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Matplotlib中文乱码怎么解决的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C#怎么使用System.Net.Mail类实现邮件发送下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18