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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
Python制作CSDN免积分下载器
Mar 10 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
django settings.py 配置文件及介绍
Jul 15 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
python 导入数据及作图的实现
Dec 03 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
python实现快递价格查询系统
Mar 03 Python
python中urllib.request和requests的使用及区别详解
May 05 Python
Python新手学习标准库模块命名
May 29 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
实例讲解PHP表单处理
2019/02/15 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
javascript知识点收藏
2007/02/22 Javascript
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
JS高级运动实例分析
2016/12/20 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
python实现逻辑回归的方法示例
2017/05/02 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
python二进制文件的转译详解
2019/07/03 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
人事档案接收函
2014/01/12 职场文书
关于责任的演讲稿
2014/05/20 职场文书
整脏治乱工作简报
2015/07/21 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
php实现自动生成验证码的实例讲解
2021/11/17 PHP
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server