plsql解决中文乱码问题,matplotlib 中文乱码
最近手头有公司的数据资源,正好用来练习matplotlib的绘图。期间碰到一个坑,就是图表显示的汉字都是方框。下面文章主要介绍Matplotlib中文乱码的两个详细解决方案。有需要的可以参考一下。
00-1010前言Matplotlib中文乱码重写概要文件修改概要文件摘要
目录
Matplotlib默认不支持中文字体,因为Matplotlib只支持ASCII字符,但是中文标注更符合中文阅读习惯。因此,本节重点介绍如何让Matplotlib在Windows环境下显示中文。
前言
当没有设置Matplotlib,而是直接使用中文时,绘制的图像会出现中文乱码。以下是中文乱码折线图:
从上图可以看出,原本应该显示在红框中的中文字体没有显示出来(红框是自己标注的)。这里有两个解决办法:第一个是治标,第二个是一劳永逸。
Matplotlib中文乱码
通过临时重写配置文件,可以解决Matplotlib显示中文乱码的问题。代码如下:
将matplotlib.pyplot作为plt导入
PLT . RC params[ font . sans-serif ]=[ sim hei ]#设置字体
PLT . RC params[ axes . unicode _ MINUS ]=false #该语句解决了图像中“-”负号的乱码问题。
将上述代码添加到您的绘图程序中,以解决中文乱码问题。这是一个非常灵活和方便的解决方案。完整的程序代码如下:
#画一个折线图
将matplotlib.pyplot作为plt导入
PLT . RC params[ font . sans-serif ]=[ sim hei ]#设置字体
PLT . RC params[ axes . unicode _ MINUS ]=false #负号正常显示
年份=[2017,2018,2019,2020]
人们=[20,40,60,70]
#生成图表
plt.plot(年,人)
Plt.xlabel(年)
Plt.ylabel(人口)
Plt.title(“人口增长”)
#设置纵坐标刻度
plt.yticks([0,20,40,60,80])
#设置填充选项:参数分别对应横坐标、纵坐标、纵坐标填充初始值和填充颜色。
plt.fill_between(年,人,20,color=green )
#显示图表
plt.show()
输出结果如下:
然而,上述解决方案适用于所有操作系统,唯一的缺点是每次编写绘图程序时都必须添加相同的代码。
重写配置文件
下面是第二种方法:直接修改配置文件,就可以一劳永逸地解决Matplotlib的中文乱码问题。注意,这个过程是在Windows环境下进行的。
Matplotlib从配置文件matplotlibrc中读取相关配置信息,如字体、样式等。所以我们需要更改这个配置文件。首先检查matplotlibrc所在的目录,使用下面的代码确定目录位置:
导入matplotlib
matplotlib.matplotlib_fname()
输出结果:
d : python python 37 lib site-packages matplotlib mpl-data matplotlibrc
然后修改配置文件matplotlibrc。打开配置文件后,找到以下信息:
#font.family:无衬线字体
#font.serif: DejaVu serif,Bitstream Vera Serif,Computer Modern Roman,New Century Schoolbook,Century Schoolbook L,Utopia,ITC Bookman,Bookman,Nimbus Roman No9 L,Times New Roman,Times,Palatino,Charter,Serif
去掉以上配置项前面的#并修改的配置项,如下图所示:
:微软雅黑,无衬线
font.serif:微软雅黑、德加武serif、比特流Vera Serif、计算机现代罗马、新世纪教科书、世纪教科书L、乌托邦、ITC Bookman、Bookman、雨云罗马No9 L、泰晤士报新罗马、泰晤士报、帕拉蒂诺、宪章、Serif
注意,由于版本问题,以上内容配置信息可能会有一些差异,请自动忽略。
最后,将中文字体微软雅荷复制到以下目录中:
c : Windows Fonts Microsoft YaHei UI
复制后,将字体粘贴到以下路径文件中:
d : python python 37 lib site-packages matplotlib mpl-data fonts TTF
粘贴字体后,会出现一个MSYH.ttc的字体文件,如下图:
编写以下测试代码:
将matplotlib.pyplot作为plt导入
将numpy作为np导入
x=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 (test ,fontsize=20,color=b )
plt.show()
如果你对自己的程序没有很强的“洁癖”,可以接受重复代码,那么我建议你选择第一种方案,因为它灵活轻便。当然,你也可以选择第二种方式,一劳永逸地解决中文乱码问题。
修改配置文件
关于Matplotlib中中文乱码的两个详细解决方案的文章到此为止。更多Matplotlib中文乱码的相关解决方案,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。