+-
python – add_axes和add_subplot有什么区别?
在之前的 answer中,建议我使用add_subplot而不是add_axes来正确显示轴,但是搜索文档我无法理解何时以及为什么我应该使用这些函数中的任何一个.

谁能解释这些差异?

最佳答案
共同点

add_axesadd_subplot都将轴添加到图形中.它们都返回一个matplotlib.axes.Axes对象.

然而,用于添加轴的机构显着不同.

add_axes

add_axes的调用签名是add_axes(rect),其中rect是一个列表[x0,y0,width,height],表示图中坐标(x0,y0)中新轴的左下角及其宽度和高度.因此轴位于画布上的绝对坐标中.例如.

fig = plt.figure()
ax = fig.add_axes([0,0,1,1])

在画布中放置一个与画布本身一样大的图形.

add_subplot

add_subplot的调用签名不直接提供将轴放置在预定义位置的选项.它允许根据子图网格指定轴应位于何处.指定此位置的通常和最简单的方法是3整数表示法,

fig = plt.figure()
ax = fig.add_subplot(231)

在此示例中,在2行3列的网格上的第一个位置(1)处创建新轴.要仅生成单个轴,将使用add_subplot(111)(在1乘1子图网格上的第一个绘图).

这种方法的优点是matplotlib可以处理精确的定位.默认情况下,add_subplot(111)会生成一个位于[0.125,0.11,0.775,0.77]或类似位置的轴,这些轴已经为标题和(刻度)标签的轴留下了足够的空间.但是,此位置也可能会根据图表中的其他元素,标题集等进行更改.
它也可以使用pyplot.subplots_adjust(…)或pyplot.tight_layout()进行调整.

在大多数情况下,add_subplot将是在画布上为绘图创建轴的首选方法.只有在确切定位很重要的情况下,add_axes才有用.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (5,3)

fig = plt.figure()
fig.add_subplot(241)
fig.add_subplot(242)
ax = fig.add_subplot(223)
ax.set_title("subplots")

fig.add_axes([0.77,.3,.2,.6])
ax2 =fig.add_axes([0.67,.5,.2,.3])
fig.add_axes([0.6,.1,.35,.3])
ax2.set_title("random axes")

plt.tight_layout()
plt.show()

enter image description here

替代

获取一个或多个子图及其句柄的最简单方法是plt.subplots().对于一个轴,使用

fig, ax = plt.subplots()

或者,如果需要更多的子图,

fig, axes = plt.subplots(nrows=3, ncols=4)

最初的问题

在initial question中,使用fig.add_axes([0,0,1,1])放置轴,使得它紧靠图形边界.这样做的缺点当然是截止,勾选标签,轴标签和标题.因此我在其中一条评论中建议使用fig.add_subplot,因为这会自动为这些元素留出足够的空间,如果这还不够,可以使用pyplot.subplots_adjust(…)或pyplot进行调整. .tight_layout().

点击查看更多相关文章

转载注明原文:python – add_axes和add_subplot有什么区别? - 乐贴网