matplotlib 使用简明教程(五)-画布、图表、元素基础操作

matplotlib 使用简明教程(五)-画布、图表、元素基础操作
通过 `plt` 库进行画布(figure)相关操作
创建一个新的画布或引用一个已有的画布
更新当前的画布(figure)
绘制画布(figure)
将画布保存成文件
清除当前的画布(figure)
关闭某个画布
获取画布信息:
为画布(Figure)添加标题
使用建议
通过 `plt` 库进行多图表操作
`plt.subplot()`
`plt.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)`
`plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)`
`plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)`
`plt.twinx(ax=None)` 和 `plt.twiny(ax=None)`
图表(Axes)基本操作
向当前画布添加图表,并作为当前的图表
获取当前画布中的图表列表
重设当前图表
删除图表
通过 plt 库进行画布(figure)相关操作
创建一个新的画布或引用一个已有的画布
plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, clear=False) 重要参数包括:

num:Figure 的编号,可选。如果这个 num 的 figure 已经存在,那么激活这个 figure 并引用,否则生成一个新的 figure
figsize:设置画布的尺寸,默认 [6.4, 4.8],单位英寸
dpi:分辨率,默认 100
facecolor:背景颜色
edgecolor:边线颜色
clear:如果 num 代表的 figure 已经存在,是否要将这个画布清空
更新当前的画布(figure)
plt.draw()

对于支持交互类型(interactive model)的 backend,如果已经开启了交互类型(ion()),则不需要每次调用。

绘制画布(figure)
plt.show()

绘制画布,对于支持交互类型的 backend,没有作用;对于非交互类型(non-interactive model)的 backend,则立即显示画布,直至画布被关闭。

将画布保存成文件
plt.savefig(fname, dpi=None, facecolor='w', edgecolor='w', orientation='portrait', papertype=None, format=None, transparent=False, metadata=None)

重要参数包括:

fname:一个文件路径或者一个 file 类型的对象
dpi:分辨率,一个整数或者 ‘figure’ 指定使用 figure 的分辨率
facecolor:背景颜色
edgecolor:边线颜色
orientation:方向,‘landscape’ 或 ‘portrait’
papertype:纸张类型,‘letter’, ‘legal’, ‘executive’, ‘ledger’, ‘a0’ 到 ‘a10’, ‘b0’ 到 ‘b10’
format:格式,可能是 ‘png’,‘pdf’,‘ps’,‘eps’,‘svg’ 等,具体取决于当前 backend 所支持的格式
transparent:是否透明
metadata:一些参数,kv 格式的参数
‘png’ 类型支持的参数见 这里
‘pdf’ 类型支持的参数见 这里
‘eps’ 或 ‘ps’ 支持 ‘Creator’ 参数
清除当前的画布(figure)
plt.clf()

关闭某个画布
plt.close()

参数可以是:

空,即关闭当前画布
Figure 实例
整数,Figure 编号
字符串,Figure 名称
‘all’,所有画布
获取画布信息:

 

 


为画布(Figure)添加标题
plt.suptitle(t, **kwargs)

重要参数说明:

t:标题内容
x,y:坐标位置,默认 x = 0.5,y = 0.98
ha:水平对齐方式,‘center’, ‘left’, ‘right’
va:竖直对齐方式,‘top’, ‘center’, ‘bottom’, ‘baseline’
使用建议
matplotlib.figure.Figure 就是 matplotlib 的画布类,通过这个类的对象其实可以完成 plt 中封装的画布相关的所有功能。
感兴趣的朋友可以通过 https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure 来了解详情。但是为了突出“实用”,减少学习成本,建议还是主要通过 plt 来操作画布,唯一需要解决的问题就是如何切换当前画布,如下举例说明:

 

 


通过 plt 库进行多图表操作
plt.subplot()
将画布(Figure)分割成若干块,并选择其中的一块作为绘制的区域。有两种基本调用方式:

subplot(行, 列, 序号) 其中的行、列即行数和列数,序号从左上角开始向右再向下,起始于 1
subplot(位置信息) 一个三位数,三位的含义分别为行、列、序号
其他参数:

sharex, sharey:Axes 对象,是否要和这个 Axes 共享 x 或 y 轴
label:为返回的 label 添加标签
plt.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)
将画布(Figure)分割成特定的 MxN 的若干小格,并指定其中某些格子作为绘制的区域。重要参数说明:

shape:一个元组,画布分割的方式,第一个是行数,第二个列数
loc:一个元组,指定绘制区域的左上角微智,第一个是行数,第二个是列数
rowspan:向右扩展的格子数量
colspan:向下扩展的格子数量
plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
创建一个画布(Figure)和一系列的子图表,重要参数说明:

nrows, ncols:子图表的的行数和列数
sharex, sharey:是否共享 x 或 y 轴,可选参数包括:
True 或 ‘all’:所有的子图表共享坐标
False 或 ‘none’:所有的子图表独立
‘row’:每行的子图表共享坐标
‘col’:每列的子图表共享坐标
squeeze:是否根据画布的分割情况调整返回数据的格式,默认(False)返回一个二维数组,如果勾选该选项为(True),则 1x1 的会返回一个单独的变量,Nx1 和 1xM 会返回一个一维数组
num:设置返回画布(figure)的编号
返回值包括:

fig:返回的画布(Figure)
ax:返回的子图表变量或列表
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
调整子图表的一些布局:

left,right,bottom,top:子图表到画布边缘的间隙
wspace,hspzce:子图表之间的间隙的宽度、高度
plt.twinx(ax=None) 和 plt.twiny(ax=None)
创建一个共用 x 或 y 轴的图表,新的图表会叠加在 ax 上(如果 ax 为 None 即叠加到当前的图表上),新图表的 y 或 x 轴 会放在右侧或顶部

图表(Axes)基本操作
向当前画布添加图表,并作为当前的图表
plt.axes(arg=None, **kwargs)

调用方式:

 

 


重要参数说明:

arg:定义了具体行为,可选值为:
None:等价于 plt.subplot(111, **kwargs)
数组:格式为 [左, 下, 宽, 高],说明图表的位置和大小,使用归一化的实数
Axes 对象:设置当前图表为该图表
sharex,sharey:是否共用 x 或 y 轴
label:设置图表的标签
projection:指定投影类型,可选,可以是’aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’ 或者自定义字符串
获取当前画布中的图表列表
plt.gca(**kwargs) 获取当前画布中的图表列表,如果设置了 kwargs,则根据这些参数进行过滤。如果过滤结果为空,那么就创建一个符合条件的图表并返回

重设当前图表
plt.sca(ax) 设置当前图表为 ax,并把 ax 所属的画布设为当前画布

删除图表
plt.delaxes(ax = None) 如果参数为空,删除当前图表,否则删除 ax 定义的图表

系列文章:

matplotlib 使用简明教程(一)-基础概念:
https://blog.csdn.net/fenghuizhidao/article/details/79352882
matplotlib 使用简明教程(二)-常用图表
https://blog.csdn.net/fenghuizhidao/article/details/83090043
matplotlib 使用简明教程(三)-一些专业图表简介
https://blog.csdn.net/fenghuizhidao/article/details/83090165
matplotlib 使用简明教程(四)-辅助性元件
https://blog.csdn.net/fenghuizhidao/article/details/83090249
matplotlib 使用简明教程(五)-画布、图表、元素基础操作
https://blog.csdn.net/fenghuizhidao/article/details/83090320
matplotlib 使用简明教程(六)-图像、动画相关
https://blog.csdn.net/fenghuizhidao/article/details/83090512
matplotlib 使用简明教程(七)-样式定义
https://blog.csdn.net/fenghuizhidao/article/details/83090553
————————————————
版权声明:本文为CSDN博主「平头某」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fenghuizhidao/article/details/83090320

posted @ 2021-08-04 13:36  常给自己加个油  阅读(745)  评论(0编辑  收藏  举报