Python实现matplotlib显示中文的方法详解


Posted in Python onFebruary 06, 2018

本文实例讲述了Python实现matplotlib显示中文的方法。分享给大家供大家参考,具体如下:

【注意】

可能与本文主题无关,不过我还是想指出来:使用matplotlib库时,下面两种导入方式是等价的(我指的是等效,当然这个说法可以商榷:)

import matplotlib.pyplot as plt
import pylab as plt

【效果图】

Python实现matplotlib显示中文的方法详解

【方式一】FontProperties

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties # 步骤一
# ...
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14) # 步骤二
plt.xlabel("x轴", fontproperties=font) # 步骤三
plt.ylabel("y轴", fontproperties=font)
plt.title("标题", fontproperties=font)
plt.show()

总的来说,很丑陋。

【方式二】 fontproperties

import matplotlib.pyplot as plt
# ...
plt.xlabel("x轴")
plt.ylabel("y轴", fontproperties="SimSun") # 步骤一  (宋体)
plt.title("标题", fontproperties="SimHei") #     (黑体)
plt.show()

灵活,另一个优点:不污染全局字体设置

【方式三】rcParams

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False  # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

简洁的用法。缺点:污染全局字体设置。(所以需要第二步骤)

【方式四】rc

import matplotlib.pyplot as plt
font = {'family' : 'SimHei',
    'weight' : 'bold',
    'size'  : '16'}
plt.rc('font', **font)        # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
#...
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.show()

灵活的用法。缺点:影响全局字体(所以需要第二步骤)

【总结】

方式二用时才设置,且不会污染全局字体设置,更灵活
方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。

【测试代码】

import numpy as np
import matplotlib.pyplot as plt
font = {'family' : 'DFKai-SB',
    'weight' : 'bold',
    'size'  : '16'}
plt.rc('font', **font) # pass in the font dict as kwargs
plt.rc('axes',unicode_minus=False)
x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("标题")
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()

运行结果:

Python实现matplotlib显示中文的方法详解

【附录】

一些中文字体的英文名

宋体 SimSun
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
新宋体 NSimSun
新细明体 PMingLiU
细明体 MingLiU
标楷体 DFKai-SB
仿宋 FangSong
楷体 KaiTi
隶书 LiSu
幼圆 YouYuan
华文细黑 STXihei
华文楷体 STKaiti
华文宋体 STSong
华文中宋 STZhongsong
华文仿宋 STFangsong
方正舒体 FZShuTi
方正姚体 FZYaoti
华文彩云 STCaiyun
华文琥珀 STHupo
华文隶书 STLiti
华文行楷 STXingkai
华文新魏 STXinwei

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python实现按任意键继续执行程序
Dec 30 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Python中@property的理解和使用示例
Jun 11 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Django给表单添加honeypot验证增加安全性
May 06 Python
python3读取文件指定行的三种方法
May 24 Python
Python实现自动上京东抢手机
Feb 06 #Python
Python获取指定文件夹下的文件名的方法
Feb 06 #Python
TensorFlow如何实现反向传播
Feb 06 #Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 #Python
TensorFlow实现创建分类器
Feb 06 #Python
Python模拟随机游走图形效果示例
Feb 06 #Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 #Python
You might like
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
鼠标图片振动代码
2006/07/06 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
django中模板的html自动转意方法
2018/05/27 Python
Python Web版语音合成实例详解
2019/07/16 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
现代化办公人员工作的自我评价
2013/10/16 职场文书
法警的竞聘演讲稿
2014/01/02 职场文书
简短大学毕业感言
2014/01/18 职场文书
电话客服工作职责
2014/07/27 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
小石潭记导游词
2015/02/03 职场文书
《日月潭》教学反思
2016/02/20 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL