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备份文件的脚本
Aug 11 Python
在Python中操作字典之update()方法的使用
May 22 Python
浅谈Python处理PDF的方法
Nov 10 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python用什么编辑器进行项目开发
Jun 17 Python
通过实例了解python__slots__使用方法
Sep 14 Python
python实现ping命令小程序
Dec 28 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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
15种PHP Encoder的比较
2007/04/17 PHP
php不用正则采集速度探究总结
2008/03/24 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
jQuery参数列表集合
2011/04/06 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
银行竞聘演讲稿范文
2014/04/23 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python