采用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所示,可见标题、标签都无法正常显示中文:

实际上,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显示的结果并不正确,注意对比图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所示,一切都正常了。

python画图设置字体_【转】matplotlib画图时的中文设置相关推荐

  1. typora高级设置字体_新买的 Mac,这样设置后可以更好用

    随着 iPhone 在国内的流行,越来越多的人喜欢上苹果产品,其中就包括拥有 30 多年历史的 Mac 电脑.虽然 macOS 一直以简洁易用著称,但由于大多数人之前已经习惯了 Windows 系统, ...

  2. 苹果python怎么设置字体_在Mac OS X 10.6中的Python中,无法在Matplotlib中将字体更改为Helvetica...

    我正在尝试将matplotlib字体更改为helvetica,我想在PDF图中使用.我尝试以下: import matplotlib matplotlib.use('PDF') import matp ...

  3. python ggplot画等值线图_传说中的画图神器Plotnine,Python中的ggplot2

    R的忠实用户知道,ggplot2可以使您在处理探索性数据分析和数据可视化时更加简单.它使得创建优雅而强大的情节变得如此容易,从而有助于解读数据中的潜在关系. 那么Python用户是否也有类似的画图工具 ...

  4. Win10下Python实现动态条形图(附解决matplotlib画图中文乱码问题)

    1.安装最新的bar-chart-race包0.2版本 从GitHub上下载压缩包,将解压后的文件夹放置在项目的创建的–虚拟环境/lib/python3.7/site-packages目录下. htt ...

  5. python图像加坐标_Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例...

    本文实例讲述了Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息.分享给大家供大家参考,具体如下: 进行图像绘制有时候需要设定坐标轴以及图像标题等信息,示例代码如下: #-*- ...

  6. Python+matplotlib绘图时显示中文的设置方法

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: =================== 在使用Python+mat ...

  7. python 四象限图_使用matplotlib绘制四象限图

    今天简单研究了一下在python中绘制四象限图的问题,结合前人相关研究成果,绘制出的图效果如下: 绘制这种图的要点是:自己构造新的x轴和y轴,不要用散点图默认的横纵坐标系,并且不要显示原来的横纵坐标系 ...

  8. eclipse设置字体_字符编码_快捷键

    eclipse设置字体.字符编码.快捷键 1.设置字体: preferences->general->appearnce->colors and fonts-->basic-- ...

  9. 画图控件_用CAD画图,还不会用属性块?你不加班谁加班

    很多使用AutoCAD的人都知道图块,图块可以重复插入.做成图库,减少重复操作,因此被广泛使用.但是大家却不太了解属性块.简单的说,属性块就是在图块上附加一些文字属性(Attribute),这些文字可 ...

最新文章

  1. java 异常 理解_java中的异常理解
  2. powerpoint打字慢
  3. 怎么计算开学第几周php,如何计算开学第几周, 要求每年通用
  4. Python程序中的线程操作-锁
  5. 帮盖尔优化SQL-----子查询优化的经典案例
  6. 不可忽略的apache 的 Keep Alive
  7. Python笔记-UiSelector中resourceId定位方式
  8. POI写Word换行
  9. Spark Structured Straming:'writeStream' can be called only on streaming Dataset/DataFrame
  10. Ubuntu 下无法Tab键自动补全功能解决办法
  11. Java课程设计 商品管理系统
  12. 装系统比较好用的PE工具推荐
  13. 碰撞检测经典解决方案
  14. 模拟信道和数字信道的区别
  15. android10及以上通话录音
  16. 微信转发软件后缀_微信发送不了100M的视频?其实只需要改个后缀,长知识了...
  17. 入华商用四周年,Office 365小程序在路上
  18. layui弹出层之layer.open弹出iframe窗口·
  19. 物理系统与艺术结合下的代码创作
  20. 拉普拉斯Laplace算子和高斯二阶导核(LOG算子)和SIFT算法

热门文章

  1. 用pycharm写python_在PyCharm中使用VPython
  2. admi后台 vue_Vue+ElementUI的后台管理框架
  3. [附源码]计算机毕业设计Node.js张家界旅游景点网站论文(程序+LW)
  4. 均值与期望到底是不是一回事?
  5. 蓝桥杯【历届试题】九宫重排
  6. WPF使用MEF插件开发打造自己的工具箱
  7. cefsharp winform 支持视频播放
  8. [数学] Jzoj P4421 aplus
  9. IE8常见兼容问题及解决方法总结
  10. Android动画之旅-Android动画基本介绍