文章目录
前言
- Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
- Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
- Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
- Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
使用Matplotlib生成一个曲线的完整代码(其中部分代码是可以省略的,为了便于将相关属性快速有效的予以记录,本文尽量将相关属性都列了出来。)
# 导入库
import numpy as np
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['microsoft yahei'] #显示中文
# 01.工具栏组件
plt.rcParams['toolbar'] = 'toolbar2' # 设置工具栏
# 02.模拟数据
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)
# 03.设置字体字典
font = {
'family': 'microsoft yahei',
'color': '#000',
'weight': 'normal',
'size': 12}
# 04.图像配置实例
plt.figure('漏刻有时数据可视化 - TestWin', facecolor='w') # 设置图形弹出窗口标题
# 05.图表标题
plt.title('漏刻有时折线图', fontdict=font, loc='center', y=1) # 图表标题
# 06.文本组件
plt.text(0.91, -0.31, r'智能化数据的转账点', fontdict=font, c='b', rotation=30) # 文本
# 07.坐标轴标签组件
plt.xlabel('时间:单位 (s)', fontdict=font) # x轴
plt.ylabel('数值:单位 (mv)', fontdict=font) # y轴
# 08.网格组件
plt.grid(which='major', axis='both', color='g', linestyle='-', linewidth=0.1) # 网格
# 09.绘制折线
plt.plot(x, y, 'r', label='直连线', marker='d') # 绘制折线
# 10.图例组件
plt.legend() # 设置图例
# 11.图表渲染
plt.show()
01.工具栏组件
'''
工具栏组件
# 注意,应当放置在图像实例化之前。
# None模式:禁用工具栏
# toolbar2模式:默认工具栏布局
# toolmanager模式:工具栏布局在首行
'''
plt.rcParams['toolbar'] = 'toolbar2' # 设置工具栏
toolmanager模式:
RcParams说明文档:RcParams
02.图表数据
折线图,一般是x轴和y轴数据,设置为对应的列表即可。本案例作为Matplotlib库的基础知识,只做简单的数据展示,不涉及更复杂的数据读取和计算。
如:
- numpy模拟数据
x = np.linspace(0.0, 5.0, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)
- 自定义固定数据
x = [1, 2, 3, 4, 5]
y = [i * 2 for i in x] #推导式
- random随机数据
x = [random.randint(0, 10) for i in range(10)]
y = [i * 2for i in x]
- pandas读取本地excel表格数据
- pymysql读取数据库数据
03.设置字体字典
全局字体样式
Matplotlib如果未正常设置中文字体,会出现乱码。基于实际开发情况,图像标题、图表标题、图例和标签都涉及到中文字体的应用,因此采用使用 matplotlib 模块的 rcParams,全局字体样式:
plt.rcParams['font.sans-serif'] = ['microsoft yahei']`
当然,也可以具体在某些组件使用时,单独调用对应的属性,如:
plt.title('自定义标题名称', fontproperties='SimHei')
常用中文字体对应名称
中文名称 | 英文名称 |
---|---|
宋体 | SimSun |
黑体 | SimHei |
微软雅黑 | Microsoft YaHei |
微软正黑体 | Microsoft JhengHei |
新宋体 | NSimSun |
新细明体 | PMingLiU |
细明体 | MingLiU |
标楷体 | DFKai-SB |
仿宋 | FangSong |
楷体 | KaiTi |
隶书 | LiSu |
幼圆 | YouYuan |
华文楷体 | STKaiti |
华文宋体 | STSong |
华文中宋 | STZhongsong |
华文仿宋 | STFangsong |
查询当前系统所有字体
如果要实时查询当前系统的所有字体,可以使用matploylib自带的font_manager
属性进行遍历查询:
# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
sys_fonts = [f.name for f in FontManager().ttflist]
for f in sorted(sys_fonts):
print(f)
字体结果展示:
04.图像配置实例
配置格式
plt.figure() 函数可以用于创建绘图窗口,可以传入以下常用参数:
matplotlib.figure.Figure(figsize=None, dpi=None, *, facecolor=None, edgecolor=None, linewidth=0.0, frameon=None, subplotpars=None, tight_layout=None, constrained_layout=None, layout=None, **kwargs)
如:
# 配置实例
plt.figure('漏刻有时数据可视化 - TestWin', facecolor='w') # 设置图形弹出窗口标题
参数说明
参数 | 说明 |
---|---|
num | 传入整数或字符串。整数可以指定创建或激活对应编号窗口并保存至 number 属性,字符串可以设置该窗口标题 |
figsize | 传入两个浮点数组成的元组,设置绘图窗口的宽和高 |
dpi | 传入整数,设置分辨率 |
facecolor | 传入代表颜色的字符串,设置背景色 |
edgecolor | 传入代表颜色的字符串,设置边框颜色 |
clear | 如果传入True,且当前窗口已经有绘图时,清空当前绘图 |
官方文档:matplotlib.figure
05.图表标题
配置格式
matplotlib.pyplot.title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)
参数说明
参数 | 说明 | 选项 |
---|---|---|
label | 文本内容 | 字符串 |
fontdict | 字体格式 | ‘fontweight’: rcParams[‘axes.titleweight’], ‘color’: rcParams[‘axes.titlecolor’] |
loc | 位置 | ‘center’, ‘left’, ‘right’,默认:‘center’ |
y | Y轴位置 | 1.0为顶部 |
**kwargs | 文本属性 |
官方文档:
06.文本组件
配置格式
matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
参数说明
参数 | 说明 |
---|---|
x,y | 放置文本的位置,默认情况下,是数据坐标 |
s | 文本内容; |
fontdict | 覆盖默认文本属性的字典,如果为None,则默认值由rcParams确定 |
**kwargs | 常见配置选项:color、fontfamily、fontsize、fontweight、rotation、transform等 |
官方文档:
07.坐标轴标签组件
配置格式
xlabel和ylabel的配置格式和参数一致。
matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
参数配置
参数 | 说明 |
---|---|
ylabe | 字符串,y-axis说明 |
labelpad | 与轴边界框(包括记号和记号标签)的点间距。如果为“无”,则上一个值保持原样 |
loc | ‘bottom’, ‘center’, ‘top’,默认’center’ |
**kwargs | 文本属性控制标签的外观,可以参考Text属性 |
官方文档:
08.网格组件
配置格式
matplotlib.pyplot.grid(visible=None, which=‘major’, axis=‘both’, **kwargs)
参数配置
参数 | 说明 |
---|---|
visible | 是否显示网格线,选项:bool or None |
which | 要更改的网格线 |
axis | {‘both’, ‘x’, ‘y’} |
**kwargs | 文本属性控制标签的外观,可以参考Text属性 |
官方文档:
09.绘制折线
配置格式
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
参数配置
plot([x], y, [fmt], *, data=None, **kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
参数 | 说明 |
---|---|
x | 传入序列、列表类型的对象,包含各个点的横坐标数值,默认为 0~len(y)-1 |
y | 传入序列、列表类型的对象,包含各个点的纵坐标数值 |
fmt | 传入一个字符串,代表所绘制线条的样式(按颜色、点型、线型顺序)1 |
data | 关键字参数,传入一个具有索引功能的对象,此时 x、y 只需传入一个字符串来表示是该对象的这个索引 |
kwargs 中常用参数:
参数 | 说明 |
---|---|
color | 设置线条的颜色,可用十六进制的RGB字符串精确设置颜色 |
label | 设置线条的标签 |
fmt 参数用法
fmt 参数传入一个字符串,按颜色、点型、线型的顺序拼接而成。
颜色(可用 color 参数代替):
字符串 | 含义 |
---|---|
‘b’ | blue 蓝色 |
‘g’ | green 绿 |
‘r’ | red 红 |
‘c’ | cyan 蓝绿 |
‘m’ | magenta 洋红 |
‘y’ | yellow 黄 |
‘k’ | black 黑 |
‘w’ | white 白 |
点型(可用 marker 参数代替)
字符串 | 含义 |
---|---|
‘.’ | point marker |
‘,’ | pixel marker |
‘o’ | circle marker |
‘v’ | triangle_down marker |
‘^’ | triangle_up marker |
‘<’ | triangle_left marker |
‘>’ | triangle_right marker |
‘1’ | tri_down marker |
‘2’ | tri_up marker |
‘3’ | tri_left marker |
‘4’ | tri_right marker |
‘s’ | square marker |
‘p’ | pentagon marker |
‘*’ | star marker |
‘h’ | hexagon1 marker |
‘H’ | hexagon2 marker |
‘+’ | plus marker |
‘x’ | x marker |
‘D’ | diamond marker |
‘d’ | thin_diamond marker |
竖线 | vline marker |
‘_’ | hline marker |
线型(可用 linestyle 参数代替):
字符串 | 含义 |
---|---|
‘-’ | solid line style 实线 |
‘–’ | dashed line style 虚线 |
‘-.’ | dash-dot line style 点画线 |
‘:’ | dotted line style 点 |
官方文档:
10.图例组件
配置格式
matplotlib.pyplot.legend(*args, **kwargs)
参数配置
legend()
legend(handles, labels)
legend(handles=handles)
legend(labels)
官方文档:
11.图表渲染
显示所有的图形。
matplotlib.pyplot.show(*, block=None)
总结
Matplotlib的基础选项属性以官网为准https://matplotlib.org/stable/api/pyplot_summary.html,由于是英文缘故,在实际学习和开发过程中,需要尽量多实践多练习。