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实现命令行有道词典的方法示例
Jan 31 Python
对Python 内建函数和保留字详解
Oct 15 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
python之mock模块基本使用方法详解
Jun 27 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
python tkinter canvas使用实例
Nov 04 Python
flask 实现token机制的示例代码
Nov 07 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
python 异步async库的使用说明
May 04 Python
Django 解决由save方法引发的错误
May 21 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 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
discuz安全提问算法
2007/06/06 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
jquery text,radio,checkbox,select操作实现代码
2009/07/09 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
Python中__name__的使用实例
2015/04/14 Python
python ddt实现数据驱动
2018/03/14 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Python函数中不定长参数的写法
2019/02/13 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
Born鞋子官网:Born Shoes
2017/04/06 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
AJAX的全称是什么
2012/11/06 面试题
反对邪教标语
2014/06/30 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书