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实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python中用于计算对数的log()方法
May 15 Python
Python数据类型学习笔记
Jan 13 Python
浅谈python中set使用
Jun 30 Python
听歌识曲--用python实现一个音乐检索器的功能
Nov 15 Python
python基础教程之匿名函数lambda
Jan 17 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
python高级特性简介
Aug 13 Python
Django admin组件的使用
Oct 24 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/03/03 冲泡冲煮
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
ext实现完整的登录代码
2008/08/08 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
jquery实现轮播图特效
2020/04/12 jQuery
js实现九宫格布局效果
2020/05/28 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
Django自定义认证方式用法示例
2017/06/23 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
Python中的元组介绍
2019/01/28 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
Why we need EJB
2016/10/20 面试题
2014年3.15团委活动总结
2014/03/16 职场文书
少先队活动总结
2014/08/29 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
大学生见习总结报告
2015/06/24 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang