Python绘图如何显示中文标题

在配置文件中找到font.sans-serif的设置,然后添加需要的中文字体名称,例如:font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif 2. 动态设置(推荐方式)在python脚本中动态设置matplotlibrc,这样不需要更改配置文件...
Python绘图如何显示中文标题
采用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所示,一切都正常了。2018-05-31
代码添加如下就可以了
from pylab import *

# 解决坐标轴负刻度乱码问题
rcParams['axes.unicode_minus'] = False
# 解决中文乱码问题
rcParams['font.sans-serif'] = ['Simhei']2019-04-15
mengvlog 阅读 31 次 更新于 2025-09-10 02:59:38 我来答关注问题0
  •  翡希信息咨询 Python绘图显示中文最简单的解决办法

    解决Python绘图显示中文的最简单办法如下:一、探索系统字体文件夹 在Windows系统中,字体文件夹路径为C:windowsFonts。 打开该文件夹,查看并选择你希望使用的中文字体。如果所需字体为.ttc格式但系统中只有.ttf格式的其他字体可用,可以通过网络搜索并下载对应的.ttf文件后存入系统字体文件夹。二、查找字体...

  • 环球青藤 Python绘图时如何显示中文

    Python使用matplotlib.pyplot画图,需要将部分标题等内容显示为中文,但是直接输入:pyplot.xlabel('时间')这时生成的图片并不会将“时间”正常显示出来,而如果我们需要显示中文,有两种方法。方式一:示例 rcParams的属性 相关推荐:《Python视频教程》方式二:(推荐使用)示例:中文字体种类 ...

  •  文暄生活科普 Python利用Matplotlib绘图无法显示中文字体的解决方案

    首先,你需要确定matplotlib库中ttf字体文件的存储路径,这可以通过在Python环境中执行命令来实现。然后,为matplotlib提供支持中文字体的能力,你需要下载一个合适的字体文件,例如SimHei.ttf,可以从相关链接获取并将其复制到ttf文件夹中。为了确保matplotlib能够识别新添加的字体,你需要清除其字体缓存。当在im...

  • Python利用Matplotlib绘图无法显示中文字体的解决方案如下:确定字体文件存储路径:首先,需要确定matplotlib库中ttf字体文件的存储路径。这通常可以通过在Python环境中执行相关命令来查询,但具体路径可能因操作系统和matplotlib安装方式而异。下载并添加中文字体文件:下载一个合适的ttf中文字体文件,例如SimHei.ttf。

  •  猪八戒网 解决Python使用matplotlib绘图时出现的中文乱码问题

    1.下载中文字体网上常用的中文字体是SimHei,提供三个下载地址,其他字体可自行搜索下载。github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf www.xiazaiziti.com/210356.html www.wfonts.com/font/simhei 2.拷贝字体到matplotlib的字体库1、查看matplotlib字体库路径,将SimHei.ttf文件放入...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部