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 09 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
python轻松实现代码编码格式转换
Mar 26 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
python 装饰器功能与用法案例详解
Mar 06 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
python爬虫请求头的使用
Dec 01 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
PHP进程通信基础之信号
2017/02/19 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python pymongo模块常用操作分析
2018/09/01 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
视光学专业毕业生推荐信
2013/10/28 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
毕业自我鉴定书
2014/03/24 职场文书
中学生演讲稿
2014/04/26 职场文书
门店业绩提升方案
2014/06/08 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
文体活动总结
2015/02/04 职场文书
工会积极分子个人总结
2015/03/03 职场文书
合作与交流自我评价
2015/03/09 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript