查看matplotlib
文档,将AxesSubplot
添加到Figure
的标准方法似乎是使用Figure.add_subplot
:
from matplotlib import pyplot
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.hist( some params .... )
我希望能够独立于图形创建类似AxesSubPlot
的对象,这样我就可以在不同的图形中使用它们。
fig = pyplot.figure()
histoA = some_axes_subplot_maker.hist( some params ..... )
histoA = some_axes_subplot_maker.hist( some other params ..... )
# make one figure with both plots
fig.add_subaxes(histo1, 211)
fig.add_subaxes(histo1, 212)
fig2 = pyplot.figure()
# make a figure with the first plot only
fig2.add_subaxes(histo1, 111)
这在matplotlib
中可能吗?如果可能,我该怎么做?
**更新:**我还没有成功地将轴和图的创建分离,但下面的答案中的示例可以轻松地在新的或旧的图示例中重用以前创建的轴。这可以用一个简单的函数来说明:
def plot_axes(ax, fig=None, geometry=(1,1,1)):
if fig is None:
fig = plt.figure()
if ax.get_geometry() != geometry :
ax.change_geometry(*geometry)
ax = fig.axes.append(ax)
return fig
5条答案
按热度按时间ibps3vxo1#
通常,您只需将axes示例传递给函数。
例如:
为了回答你的问题,你总是可以这样做:
此外,您可以简单地将轴示例添加到另一个图形:
调整它的大小以匹配其他子图“形状”也是可能的,但它很快就会变得比它的价值更麻烦。根据我的经验,对于复杂的情况,只是传递一个图或轴示例(或示例列表)的方法要简单得多。
dwthyt8l2#
下面展示了如何将轴从一个图“移动”到另一个图。这是@JoeKington最后一个示例的预期功能,在较新的matplotlib版本中不再工作,因为轴不能同时存在于多个图中。
您首先需要从第一个图形中删除轴,然后将其附加到下一个图形,并给予一些位置。
oo7oh9g93#
对于线图,您可以处理
Line2D
对象本身:5sxhfpxr4#
TL;DR部分基于Joe很好的答案。
选项1:
fig.add_subplot()
选项2:将
ax[index]
传递给返回ax[index].plot()
的函数输出方面。x1c 0d1xx 1c 1d 1x
注意:Opt.1
plt.title()
在opt.2中更改为ax[index].set_title()
。在货车der Plas的书中找到更多Matplotlib Gotchas。0yycz8jy5#
扩展我之前的答案,我们可以返回整个
ax
,而不仅仅是ax.plot()
。如果dataframe有20种类型的100个测试(此处为id):
和情节函数(这是整个答案的关键):
我们可以实现: