
谁能解释这些差异?
add_axes和add_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()

替代
获取一个或多个子图及其句柄的最简单方法是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有什么区别? - 乐贴网