我有一个函数,它打印了一个被调用的图,然后返回一些其他的数据,这个图的代码是
def somefunction(input):
x = np.linspace(-5,5,100)
fig, axs = plt.subplots(2,sharex=True)
fig.suptitle("Some plots")
axs[0].plot(x, x**2, "-b", label="square")
axs[1].plot(x, x**3, "-y", label="cube")
axs[0].set(ylabel="values")
axs[1].set(xlabel="Timestamp (common)", ylabel="values")
axs[0].legend()
axs[1].legend()
plt.show()
return [1,2,3]
现在,我想做的是稍后再次打印这个图,但要包含更多的信息,我考虑过将这里创建的图形保存为函数的输出,我尝试将以下代码添加到代码中:
def somefunction(input):
x = np.linspace(-5,5,100)
fig, axs = plt.subplots(2,sharex=True)
fig.suptitle("Some plots")
axs[0].plot(x, x**2, "-b", label="square")
axs[1].plot(x, x**3, "-y", label="cube")
axs[0].set(ylabel="values")
axs[1].set(xlabel="Timestamp (common)", ylabel="values")
axs[0].legend()
axs[1].legend()
plt.show()
fig_out = fig
return [1,2,3], fig_out
然后我就可以得到函数输出的第二个分量中的数字,然后根据需要修改它。比如:
figure = somefunction(input)[1]
#now perform any wanted changes in the plot and plot again
ax0 = figure.axes[0]
ax0.text(3, 8, 'New text updated in the figure', style='italic',
bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 10})
plt.show()
这不起作用,图形确实保存在输出的第二个组件中,但它不允许我更改任何内容,它就在那里,我不能更改它,也不能绘制对图形所做的任何更改。
我也试过保存坐标轴而不是图形,但是同样的情况。我似乎找不到一种方法来编辑这个情节后,它被创建。这甚至可能吗?
1条答案
按热度按时间yiytaume1#
如果您不尝试同时显示两个图,您的代码是正确的。有多个选项可以解决这个问题,例如:
**选项1:**在末尾显示图
**选项2:**使用
block=False
表示等待,直到返回所有图形