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

通过 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.gcf()
返回当前所有画布的标签列表plt.get_figlabels()
返回当前所有画布的编号plt.get_fignums()

为画布(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 来操作画布,唯一需要解决的问题就是如何切换当前画布,如下举例说明:

>>> f1 = plt.figure() # 创建画布 1
>>> f2 = plt.figure() # 创建画布 2
>>> f3 = plt.figure() # 创建画布 3
>>> f3 == plt.gcf() # 当前画布是 f3
True
>>> plt.get_fignums() # 获取画布编号列表
[1, 2, 3]
>>> f = plt.figure(num = 1) # 通过 figure(num = 编号) 引用编号为 1 的画布
>>> f1 == f # f1 和 f 指向了同一 Figure 对象
True
>>> f1 == plt.gcf() # 当前画布已经切换成了 f1
True

通过 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)

调用方式:

plt.axes()
plt.axes(rect, projection=None, **kwargs)
plt.axes(ax)

重要参数说明:

  • 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

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值