问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python绘图如何显示中文标题

发布网友 发布时间:2022-04-25 13:11

我来回答

2个回答

热心网友 时间:2022-04-06 01:20

采用matplotlib作图时默认设置下是无法显示中文的,例如编写如下python脚本,
#-*- coding: utf-8 -*-
from pylab import *
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()
显示出来的结果如图1所示,可见标题、标签都无法正常显示中文:
图1
实际上,matplotlib是支持unicode编码的,出现图1的问题主要是没有找到合适的中文字体,在matplotlib的配置文件中,可以看到字体的默认设置如下:
#font.family : sans-serif
#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
并没有中文字体,所以我们只要手动添加中文字体的名称就可以了,不过并不是添加我们熟悉的“宋体”或“黑体”这类的名称,而是要添加字体管理器识别出的字体名称,matplotlib自身实现的字体管理器在文件font_manager.py中,自动生成的可用字体信息在保存在文件fontList.cache里,可以搜索这个文件查看对应字体的名称,例如simhei.ttf对应的名称为’SimHei’,simkai.ttf对应的名称为’KaiTi_GB2312’等。因此我们只要把这些名称添加到配置文件中去就可以让matplotlib显示中文,修改的方法有两种:
1. 直接修改配置文件matplotlibrc
在配置文件中找到font.sans-serif的设置,然后添加需要的中文字体名称,例如:
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
2. 动态设置(推荐方式)
在python脚本中动态设置matplotlibrc,这样不需要更改配置文件,方便灵活,例如:
mpl.rcParams['font.sans-serif'] = ['SimHei']
修改后的代码如下:
#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()
显示出来的结果如图2所示,可见标题、标签都能正常显示中文:
图2
但是细心些可以看出图2显示的结果并不正确,注意对比图1和图2的横坐标的坐标值,会发现图2中负轴的横坐标值不对,负号不见了!很明显,这不是程序的错误,而是由于更改了字体导致显示不出负号,在配置文件中我们可以在axes相关设置里找到如下设置:
#axes.unicode_minus : True
可见默认情况下采用的是unicode的minus,看来我们选择的字体对这点支持不够,所以只要把它设置为False就可以了,最终的代码如下:
#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'钟形函数')
plt.xlabel(u'时间')
plt.ylabel(u'幅度')
plt.show()
最终显示的结果如图3所示,一切都正常了。

热心网友 时间:2022-04-06 02:38

代码添加如下就可以了
from pylab import *

# 解决坐标轴负刻度乱码问题
rcParams['axes.unicode_minus'] = False
# 解决中文乱码问题
rcParams['font.sans-serif'] = ['Simhei']
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离职几个月公司发短信说我离职生效叫我回去补办离职交接手续怎么 开除员工不办手续违法吗 辞退员工没有办手续违法吗 苹果13/6.1录制两个人脸,后面换锁屏密码认证还有什么提醒,或者是两个人... 很规律很威严的词语是什么 我老了又无能 想有个爱我一辈子的 到今没 就一个人 把爱放心里 用数字... 日语N2 20天复习够吗 为什么泥工先于木工 泥工做好隔多久做木工 从泥工做好到做木工,需要等待多久? 水泥操作人员作业流程是怎样的? python画图怎么设置背景颜色? 如何使用Python绘图之matplotlib快速绘图 如何用Python绘画日本国旗 如何用python画一个Koch snowflake 乳胶枕的品牌排行有哪些 python这个怎么绘图? 在曼谷看见一家牌子是THRY的乳胶床垫,当时说可以订做,东西很好,现在很... 在曼谷哪里可以买到正品的乳胶枕,还有什么好的品牌可以推荐吗?谢谢... 关于乳胶枕,你有哪些好的品牌可以推荐? 我是个13岁的女孩 为什么近几天我尿尿是红色的 哪个牌子的乳胶枕好 女人小便是血是怎么回事 什么乳胶枕牌子好 八大乳胶枕品牌盘点 我是女生,今天上厕所的时候发现小便带血是怎么回事? 天然乳胶床垫选哪个品牌的比较好呢? 女性小便红色怎么回事 关于宽容的优美排比句 曼芭普乳胶枕头怎么样,泰国乳胶枕头raza好吗 女性小便带淡红色血是怎么回事 宽容好词好句 python下,如何在Qlabel显示的图片上绘图?? python的作图包有哪些 针对绘图方面的需求,matlab,python和R哪个更加强大 windows7笔记本电脑网络电缆是什么 ...说是什么网络电缆被拔出,天啦,我的电脑哪有什么网络电缆啊_百度知 ... 联想g410笔记本电脑的网络电缆在哪 excel柏拉图怎么做 如何用excel制做柏拉图 如何用excel2010做柏拉图 怎么用excel2010做柏拉图 如何在excel10中制作柏拉图 在Excel--2010中如何建立柏拉图 如何用excel 2010制作柏拉图 2021年房子首付比例 电脑里的网关是什么?网关设置在哪里? 买房首付多少,买房首付最低多少 电脑网关怎么设置才能上网 电脑网关怎么设置,数字是什么 求:设置网关有什么要求??? 2019年平均工资出炉出炉,哪个行业工资最高?