2019年7月15日14:34:34
环境
Python3.6
前言
Matplotlib的一些基础知识
1、创建
2、简单的plt例子
3、绘图样式的修改
4、一次创建多个子图
5、保存图片
6、关于Matplotlib中文乱码这回事
直接上代码操作,可以体验一下,自己根据自己需要修改即可。
关于实际效果的生成,自己实际运行一下就会显示,截图还是有点麻烦的,就不截图了。
建议刚开始读一下官网对这个库的基本介绍
英文阅读有点吃力的话,使用谷歌浏览器的谷歌翻译插件,网页全部翻译为中文阅读即可。
官网:
https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py
关于Matplotlib中文乱码这回事
注:
Matplotlib 会出现中文为"小im方块"无法正常显示的乱码情况,原因大概是由于字体文件不支持中文导致的。
这里介绍一种解决方法,下边代码标题为中文,执行下边代码可查看执行效果。
操作方法
- 1、下载SimHei.ttf文件
百度网盘链接:
链接:https://pan.baidu.com/s/1RJxBQIhvRB8Q4kXxOiGvhQ
提取码:caxj
下载是一个压缩文件,自行解压后字体文件为SimHei.ttf即可,原字体文件百度网盘分享失败,提示包含敏感信息,只能压缩后分享。
- 2、创建test.py文件,代码如下
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@File: 6、关于中文乱码这回事.py
@Author : hyh
@Ide: Pycharm
@Contact: hyh_youxiang@163.com
@Date: 19-7-15 上午11:53
-------------------------------------------------
Description :
-------------------------------------------------
"""
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
"""
为了支持中文防止乱码,需要提前设置这个。
记得本目录下的SimHei.ttf文件
"""
# 支持中文
# plt.rcParams['font.sans-serif'] = ['SimHei.ttf'] # 用来正常显示中文标签
# plt.rcParams['font.serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
myfont = fm.FontProperties(fname='SimHei.ttf')
"""
柱状图
"""
def plt_bar():
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.bar(names, values) # 柱状图
plt.suptitle('柱状图', fontproperties=myfont)
plt.savefig("柱状图.jpg") # eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff 都可以
plt.show()
"""
折线图
"""
def plt_plot():
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.plot(names, values) # 折线图
plt.suptitle('折线图', fontproperties=myfont)
plt.savefig("折线图.jpg") # eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff 都可以
plt.show()
"""
饼状图
"""
def plt_pie():
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.suptitle('饼状图', fontproperties=myfont)
plt.savefig("饼状图.jpg") # eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff 都可以
plt.show()
"""
散点图
"""
def plt_scatter():
names = ['group_a', 'group_b', 'group_c']
values = [1, 10, 100]
plt.figure(figsize=(9, 3))
plt.scatter(names, values) # 散点图
plt.suptitle('散点图', fontproperties=myfont)
plt.savefig("散点图.jpg") # eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff 都可以
plt.show()
if __name__ == '__main__':
plt_bar()
plt_plot()
plt_pie()
plt_scatter()
- 3、执行 test.py
查看plt字体的标题中文是否显示正确即可。
注:SimHei.ttf和test.py需要在同一个文件夹下。
总结
实际需要做的就是给Matplotlib 的中文指定下 支持中文的字体文件
该字体文件这里我用的是下载的Simei.ttf文件,
放在需要执行的tets.py同目录下
然后py文件开头添加以下代码
# 1、开头添加以下代码
"""
为了支持中文防止乱码,需要提前设置这个。
记得需要放置在本目录下的SimHei.ttf字体文件
"""
# 支持中文
import matplotlib.font_manager as fm
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
myfont = fm.FontProperties(fname='SimHei.ttf') # 指定本目录下的SimHei.ttf 字体文件
# 2、中间使用中文的地方添加代码
# 需要使用中文的地方需要添加以下代码指定字体文件:
# 添加 fontproperties=myfont 字段
plt.suptitle('散点图', fontproperties=myfont)
如有什么问题欢迎随时提问
共同学习,一起进步