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查找目录下指定扩展名的文件实例
Apr 01 Python
Python中的推导式使用详解
Jun 03 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
python去除字符串中的换行符
Oct 11 Python
Python使用OpenCV进行标定
May 08 Python
Django基础知识与基本应用入门教程
Jul 20 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
python url 参数修改方法
Dec 26 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 Python
解决hive中导入text文件遇到的坑
Apr 07 Python
详解Python为什么不用设计模式
Jun 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
php增删改查示例自己写的demo
2013/09/04 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
js确定对象类型方法
2012/03/30 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
python入门前的第一课 python怎样入门
2018/03/06 Python
浅析Django中关于session的使用
2019/12/30 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
社区工作者感言
2014/03/02 职场文书
平面设计专业求职信
2014/08/09 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2015教师节通讯稿
2015/07/20 职场文书
小学数学教学随笔
2015/08/14 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android