Matplotlib图到轴

时间:2019-10-02 07:54:47

标签: python matplotlib plot plotly

我有一个返回plt.figure()的API。我三次调用该API来生成三个不同的数字。

f1 = plt.figure()
f2 = plt.figure()
f3 = plt.figure()

我想并排显示它们,所以我创建了一个新的图形,如下所示:

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

如何使用通过API创建的axes来填充每个plt.figure()

简而言之,我想填充这些:

enter image description here

1 个答案:

答案 0 :(得分:1)

您正在尝试将一个图形嵌入另一个图形中,请参见here。我认为,即使没有matplotlib的适当支持,也无需深入研究软件包的内部机制,这也是有可能的。我建议通过提取数据来重新创建子图。如果数据与图形本身联系在一起,则可以从轴本身提取数据。假设数据成行,则提示可能是以下代码;

import matplotlib.pyplot as plt, numpy as np

figs = []
for _ in range(3):
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.set_title(f'Dummy{_}')
    h1 = ax.plot(np.random.rand(10,2))[0]
    figs.append(fig)


def update(axes, figs):
    for axi, figi in zip(axes, figs):
        for axj in figi.axes:
            for line in axj.lines:
                x, y = line.get_data()
                axi.plot(x, y)
        axi.figure.canvas.draw_idle()
    return axes

print(figs[0].axes[0].lines)
fig, ax = plt.subplots(1, 3)
ax[1].set_title('Recreated figure')
update(ax, figs)
fig.show()

enter image description here