当前有效 matplotlib 版本为: 3.4.1 。
概述
axes() 函数功能与 subplot() 函数极其相似。都是向当前图像( figure )添加一个子图( Axes ),并将该子图设为当前子图或者将某子图设为当前子图。两者的区别在于 subplot() 函数通过参数确定在子图 http://www.cppcns.com 网格中的位置,而 axes() 函数在添加子图位置时根据4个坐标确定位置。
函数的定义签名为: matplotlib.pyplot.axes(arg=None, **kwargs)
函数的调用签名为:
# 在当前图像中添加一个铺满的子图 plt.axe www.cppcns.com s() # 根据rect位置添加一个子图 plt.axes(rect, projection=None, polar=False, ** WEAaEfHSF kwargs) # 将ax设置为当前子图 plt.axes(ax)
函数的参数为:
arg : 取值为 None 或四元组 rect 。 None :使用 subplot(**kwargs) 添加一个新的铺满窗口的子图。 四元组 rect : rect = [left, bottom, width, height] ,使用 ~.Fig编程客栈ure.add_axes 根据 rect 添加一个新的子图。 rect 的取值为以左下角为绘制基准点,确定高度和宽度。 rect 的4个元素均应在 [0,1] 之间(即以图像比例为单位)。 projection : 控制子图的投影方式。 {None, 'aitoff', 'hammer', 'lambert', 'mollweide', 'polar', 'rectilinear', str} ,默认值为 None ,即 'rectilinear' 。 polar :相当于设置 projection='polar' 。可选参数。布尔值,默认值为 True 。 sharex, sharey :用于设置共享x/y轴。可选参数。 Axes 对象。默认值为 None 。 lables :返回的子图对象的标签。可选参数。字符串。 **kwargs :用于向创建子图网格时用到的 ~matplotlib.gridspec.GridSpec 类的构造函数传递关键字参数。可选参数。字典。函数的返回值为: .axes.SubplotBase 实例,或其他 ~.axes.Axes 的子类实例。
函数原理
axes 函数其实是 Figure.add_subplot 和 Figure.add_axes 方法的封装。源码为:
def axes(arg=None, **kwargs): fig = gcf() if arg is None: return fig.add_subplot(**kwargs) else: return fig.add_axes(arg, **kwargs)
案例:使用axes函数添加子图
根据输出可知, axes 添加的子图是可以重叠的 。
案例:混合应用subplot、subplots、subplot2grid、axes函数
import matplotlib.pyplot as plt # 添加3行3列子图9个子图 fig, axes = plt.subplots(3, 3) # 为第1个子图绘制图形 axes[0, 0].bar(range(1, 4), range(1, 4)) # 使用subplot函数为第5个子图绘制图形 plt.subplot(335) plt.plot(1,'o') # 使用subplot2grid函数将第三行子图合并为1个 plt.subplot2grid((3,3),(2,0),colspan=3) # 在图像0.5,0.5位置添加一个0.1宽0.1长的背景色为黑色的子图 plt.axes((0.5,0.5,0.1,0.1),facecolor='k') plt.show()
axes 函数与 subplot 、 subplots 、 subplot2grid 函数的对比
相同之处: axes 函数与 subplot 、 subplot2grid 函数都是添加一个子图。
不同之处: axes 函数可在图像中的任意位置添加子图。 subplot 、 subplots 、 subplot2grid 函数只能根据固定的子图网格位置添加子图。 axes 函数创建的子图可重叠。 subplot 、 subplots 、 subplot2grid 函数创建的子图如果位置重叠,会覆盖掉原有的子图(删除原有子图)。
到此这篇关于matplotlib 向任意位置添加一个子图(axes)的文章就 编程客栈 介绍到这了,更多相关matplotlib任意位置添加子图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
查看更多关于matplotlib 向任意位置添加一个子图(axes)的详细内容...