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中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
理解Python中的With语句
Mar 18 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
python 常见的反爬虫策略
Sep 27 Python
Django model class Meta原理解析
Nov 14 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
用PHP调用数据库的存贮过程!
2006/10/09 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
php画图实例
2014/11/05 PHP
php生成二维码
2015/08/10 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
js获取当前select 元素值的代码
2010/04/19 Javascript
jquery foreach使用示例
2013/09/12 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
js 通用订单代码
2013/12/23 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
Python中统计函数运行耗时的方法
2015/05/05 Python
Python写的一个简单监控系统
2015/06/19 Python
python 多线程重启方法
2019/02/18 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
个人廉洁自律承诺书
2014/03/27 职场文书
亮剑观后感600字
2015/06/05 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技