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 相关文章推荐
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
python爬取NUS-WIDE数据库图片
Oct 05 Python
python和shell获取文本内容的方法
Jun 05 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
python实现多张图片拼接成大图
Jan 15 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
为什么相对PHP黑python的更少
Jun 21 Python
python温度转换华氏温度实现代码
Dec 06 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
AI:如何训练机器学习的模型
Apr 16 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
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
2016/04/12 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
Javascript 刷新全集常用代码
2009/11/22 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
python math模块的基本使用教程
2021/01/16 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
自主招生自荐信格式
2013/12/03 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python
python超详细实现完整学生成绩管理系统
2022/03/17 Python
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python