我有一个返回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()
?
简而言之,我想填充这些:
答案 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()