python设置 matplotlib 正确显示中文的四种方式


Posted in Python onMay 10, 2021

一、前言

啪地一下点进来,很快呀~~

python设置 matplotlib 正确显示中文的四种方式

matplotlib是 Python 优秀的数据可视化第三方库,matplotlib是基于 numpy 的一套 Python 工具包。这个包提供了丰富的数据绘图工具,主要用于绘制一些统计图形。

python设置 matplotlib 正确显示中文的四种方式

Matplotlib库由各种可视化类构成,内部结构复杂,受 Matlab 启发 matplotlib.pyplot 是绘制各类可视化图形的命令子库,相当于快捷方式。

import matplotlib.pyplot as plt

可 matplotlib 并不支持中文显示。有中文显示会出现如下问题:

# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt

# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 设置图形显示风格
plt.style.use('ggplot')

# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)
# 显示图例
plt.legend()

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()

可 matplotlib 并不支持中文显示。有中文显示会出现如下问题:

# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt

# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 设置图形显示风格
plt.style.use('ggplot')

# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)
# 显示图例
plt.legend()

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()

python设置 matplotlib 正确显示中文的四种方式

需要我们手动一下下设置~~,才能解决中文显示的问题。

二、解决方法

1. 方式一

from matplotlib.font_manager import FontProperties  # 导入FontProperties

font = FontProperties(fname="SimHei.ttf", size=14)  # 设置字体

# 哪里需要显示中文就在哪里设置
# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties  # 步骤一
# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 设置图形显示风格
plt.style.use('ggplot')
font = FontProperties(fname="SimHei.ttf", size=14)  # 步骤二
# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13, fontproperties=font)
plt.ylabel("直接信任度值", fontsize=13, fontproperties=font)
# 显示图例
plt.legend(prop=font)

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()

结果如下:

python设置 matplotlib 正确显示中文的四种方式

2. 方式二

通过 fontdict 字典参数来设置

fontdict={"family": "KaiTi", "size": 15, "color": "r"}
# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt

# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# 设置图形显示风格
plt.style.use('ggplot')

# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13, fontdict={"family": "KaiTi", "size": 15, "color": "r"})
plt.ylabel("直接信任度值", fontsize=13, fontdict={"family": "KaiTi", "size": 15, "color": "k"})

# 显示图例
plt.legend(prop={'family': 'SimHei', 'size': 16})

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()

3. 方式三

改变全局的字体

# matplotlib其实是不支持显示中文的 显示中文需要一行代码设置字体
mpl.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt
import matplotlib as mpl

# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

# matplotlib其实是不支持显示中文的 显示中文需要一行代码设置字体
mpl.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
# 设置图形显示风格
plt.style.use('ggplot')

# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)

# 显示图例
plt.legend()

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
plt.show()

结果如下:

python设置 matplotlib 正确显示中文的四种方式

4. 方式四

同样也是全局改变字体的方法

font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'   : '16'}
plt.rc('font', **font)               # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False)  # 步骤二(解决坐标轴负数的负号显示问题)
# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
三折线  黑白灰风格  标签label 标记点形状
"""
import matplotlib.pyplot as plt

# 生成x轴数据  列表推导式
x_data = [i for i in range(0, 55, 5)]

# 构造y轴数据
y_data1 = [0.5, 0.62, 0.72, 0.78, 0.85, 0.7, 0.64, 0.44, 0.29, 0.15, 0.09]
y_data2 = [0.5, 0.67, 0.71, 0.76, 0.79, 0.66, 0.58, 0.44, 0.38, 0.26, 0.18]
y_data3 = [0.5, 0.59, 0.72, 0.74, 0.76, 0.68, 0.58, 0.48, 0.4, 0.36, 0.3]

font = {'family' : 'SimHei',
        'weight' : 'bold',
        'size'   : '16'}
plt.rc('font', **font)               # 步骤一(设置字体的更多属性)
plt.rc('axes', unicode_minus=False)  # 步骤二(解决坐标轴负数的负号显示问题)

# 设置图形显示风格
plt.style.use('ggplot')

# 设置figure大小  像素
plt.figure(figsize=(8, 5), dpi=100)

# 绘制三条折线  点的形状 颜色  标签:用于图例显示
plt.plot(x_data, y_data1, marker='^', color="k", label="设备1")
plt.plot(x_data, y_data2, marker="o", color="k", label="设备2")
plt.plot(x_data, y_data3, marker="s", color="k", label="设备3")

# x y 轴标签   字体大小
plt.xlabel("时间周期/min", fontsize=13)
plt.ylabel("直接信任度值", fontsize=13)

# 显示图例
plt.legend()

# 保存图片  展示show
plt.savefig("折线图01.png", dpi=200)
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设置 matplotlib 正确显示中文的四种方式的详细内容,更多关于python matplotlib 正确显示中文的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 时间操作例子和时间格式化参数小结
Apr 24 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
python正则实现提取电话功能
Feb 24 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
python re的findall和finditer的区别详解
Nov 15 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 Python
提取视频中的音频 Python只需要三行代码!
Python-typing: 类型标注与支持 Any类型详解
May 10 #Python
超详细Python解释器新手安装教程
Python机器学习三大件之一numpy
python实现自动清理文件夹旧文件
May 10 #Python
Python中的min及返回最小值索引的操作
May 10 #Python
发工资啦!教你用Python实现邮箱自动群发工资条
You might like
B2K与车机的中波PK
2021/03/02 无线电
PHP生成静态页面详解
2006/11/19 PHP
PHP 基本语法格式
2009/12/15 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php的sso单点登录实现方法
2015/01/08 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
layui 解决form表单点击无反应的问题
2019/10/25 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python实现的计数排序算法示例
2017/11/29 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
python如何变换环境
2020/07/21 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
班级口号大全
2014/06/09 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
励志演讲稿500字
2014/08/21 职场文书
工程合作意向书范本
2015/05/09 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
Python进度条的使用
2021/05/17 Python
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android