暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python 解决matplot不显示中文问题

EE漫谈 2019-10-17
1295


 

  1. 修改配置文件的方法

修改matplotlibrc文件如下两个地方:

 

首先是去掉前面的#,然后

axes.unicode_minus后面的True改为False。这个是解决负号'-'显示为方块的问题。

font.sans-serif后面的字体改为系统自带的中文字体即可。这个是解决中文显示为方块的问题。

windows自带的中文字体附录如下

 

这种修改方式有一个问题:代码在新的编译环境上需要重新修改配置文件,比较麻烦。

第二种方式就是在代码里修改,也比较简单

代码如下

import matplotlib.pyplot as plt

#用来正常显示负号

plt.rcParams['axes.unicode_minus']=False

#用来正常显示中文标签,SimHei是字体名称

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['font.serif'] = ['KaiTi']

通过上面的代码可以看出,其实修改的地方与matplotlibrc文件里一致。这里'SimHei'可以更换为上图中的其他字体。

上面的font.sans-serif和font.serif是什么意思呢?

在罗马字母阵营中,字体分为两大种类:Sans Serif和Serif。翻译过来就是无衬线字体和衬线字体。

Serif的意思是,在字的笔划开始及结束的地方有额外的装饰,而且笔划的粗细会因直横的不同而有不同。相反的,Sans Serif则没有这些额外的装饰,笔划粗细大致差不多。如下图:

 

 

可以看出,我们平时所用的Georgia、Times New Roman等就属于Serif字体,而Arial、Tahoma、Verdana等则属于Sans Serif字体。

对中文而言,同样存在这两大种类:,宋体、细明体(繁体中常用)等就属于Serif;而黑体、幼圆等则属于Sans Serif。

衬线字体Serif的可读性非常好,所以它应用的最多的地方也正是出版物或者印刷品的正文内容等以大段文字作为表现形式的作品上。

 

无衬线字体比较圆滑,线条一般粗细均匀。比较适合用作艺术字、标题等。因为无衬线字体通常粗细比较均匀,所以在小字体显示的时候,可读性会降低,容易引起视觉疲劳。

 

文章的内文、正文使用的是易读性较佳的Serif字体,这可增加易读性,而且长时间阅读下因为会以word为单位来阅读,较不容易疲倦。

而标题、表格内用字则采用较醒目的Sans Serif字体,它需要显着、醒目,但不必长时间盯着这些字来阅读。

  像宣传品、海报类,为求醒目,它的短篇的段落也会采用Sans Serif字体。但在书籍、报刊杂志,正文有相当篇幅的情形下,则应采用Serif字体来减轻读者阅读上的负担。在Web设计及浏览器设置中也应遵循此原则。

文章转载自EE漫谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论