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 27 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
Python遍历numpy数组的实例
Apr 04 Python
使用实现XlsxWriter创建Excel文件并编辑
May 04 Python
Python高级用法总结
May 26 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
python画图的函数用法以及技巧
Jun 28 Python
Python装饰器的应用场景代码总结
Apr 10 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 Python
利用Python多线程实现图片下载器
Mar 25 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加MYSQL服务器
2006/10/09 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
Python浅复制中对象生存周期实例分析
2018/04/02 Python
tensorflow学习笔记之mnist的卷积神经网络实例
2018/04/15 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
Python用SSH连接到网络设备
2021/02/18 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
公司JAVA开发面试题
2015/04/02 面试题
考试没考好检讨书
2014/01/31 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
Oracle11g R2 安装教程完整版
2021/06/04 Oracle