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动态监控日志内容的示例
Feb 16 Python
对python中return和print的一些理解
Aug 18 Python
使用python装饰器计算函数运行时间的实例
Apr 21 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
Django logging配置及使用详解
Jul 23 Python
python列表推导式入门学习解析
Dec 02 Python
Python对象的属性访问过程详解
Mar 05 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 Python
提取视频中的音频 Python只需要三行代码!
Python-typing: 类型标注与支持 Any类型详解
May 10 #Python
超详细Python解释器新手安装教程
Python机器学习三大件之一numpy
python实现自动清理文件夹旧文件
May 10 #Python
Python中的min及返回最小值索引的操作
May 10 #Python
发工资啦!教你用Python实现邮箱自动群发工资条
You might like
2021年最新CPU天梯图
2021/03/04 数码科技
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
jQuery 全选效果实现代码
2009/03/23 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
vue+node+webpack环境搭建教程
2017/11/05 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
Python利用ansible分发处理任务
2015/08/04 Python
Python模块的加载讲解
2019/01/15 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
PyQt实现计数器的方法示例
2021/01/18 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
学生会部长竞选稿
2015/11/19 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL