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打造出适合自己的定制化Eclipse IDE
Mar 02 Python
python处理按钮消息的实例详解
Jul 11 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
Python查找第n个子串的技巧分享
Jun 27 Python
python gdal安装与简单使用
Aug 01 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
python 安装impala包步骤
Mar 28 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 Python
Python之字典添加元素的几种方法
Sep 30 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 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实现维护文件代码
2007/06/14 PHP
php 高性能书写
2010/12/11 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
详解Python进程间通信之命名管道
2017/08/28 Python
python3.5绘制随机漫步图
2018/08/27 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python3实现猜数字游戏
2020/12/07 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
python如何绘制疫情图
2020/09/16 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
如何进行有效的自我评价
2013/09/27 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
学员自我鉴定
2014/03/19 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
Python打包为exe详细教程
2021/05/18 Python