移动多个轴并自动估算位置plt.figure()

时间:2018-01-18 14:08:16

标签: python python-3.x matplotlib

我有一些代码可以生成带有单个Axes对象的图形。

import matplotlib.pyplot as plt

def myfunc():
    fig, ax = plt.subplots()
    ax.plot(range(5))
    return fig, ax

fig, ax = myfunc()

我想包装那些代码,以便我可以多次调用它,提取ax对象并将其收集到一个新的图中,基本上创建一个合成。我已经有了一些代码将轴从一个图形移动到另一个图形:

def move_axes(ax, original_fig, target_fig, position=None):
    """
    Move Axes object from original_fig to target_fig.
    Sacrifices original_fig.
    # MISSING A CLEVER WAY TO AUTOMATICALLY ESTIMATE THE NEW POSITION.
    """
    if position is None:
        position = ax.get_position()
    ax.remove()

    ax.figure = target_fig
    target_fig.axes.append(ax)
    target_fig.add_axes(ax)

    ax.set_position(position)
    plt.close(original_fig)
    return target_fig

所以我想做的是:

target_fig = plt.figure()
for i in range(3):
    fig, ax = myfunc()
    move_axes(ax, fig, target_fig)

但这不起作用,因为我需要设置轴的位置,使它们不会相互重叠。有没有一个干净的方法来做到这一点,即抓住轴的大小,展开target_fig,以便每个新的斧头垂直堆叠在前一个轴的下方?

0 个答案:

没有答案