我有一个关于 matplotlib 中的窗口/图形的问题。我不确定这是否可行,但想知道是否可行。 基本上,当我运行整个脚本时,最后会使用 matplotlib 绘制图表。为了在再次运行脚本后生成新图形,我必须关闭该图形窗口。
有没有办法在不关闭图形的情况下保持打开状态?
举个例子:
我会通过运行我的脚本来绘制图 x。
然后我想将这个图表保留在我的屏幕上,对我的脚本进行更改,再次绘制图表,以便您可以看到旧图表和新图表。因此 n 个图可能是可见的。
请注意,我不想在脚本中绘制新图形。我只是希望能够查看图表、进行更改并查看新图表而无需保存图表。
编辑:
这是我的代码的绘图部分:
def plot_data(atb_mat_2, sd_index, sd_grad):#, rtsd):#, sd_index, sd_grad):
fig = plt.figure()
fig, (ax0, ax1, ax4, ax2, ax3) = plt.subplots(nrows=5, figsize=(15,10), num='Current Relative Method'+' ' + path)
ax0.plot(atb_mat_2)
ax0.set_title('Relative Track',fontsize=11)
ax0.set_ylim([-10,10])
if len(sd_index)!=0:
if len(sd_index)>1:
for i in range(1, len(sd_index)):
if sd_grad[i]==1:
ax0.axvspan(sd_index[i-1],sd_index[i], edgecolor='r', lw=None, alpha=0.1)
ax1.plot(rtsd)
ax1.set_title('RT Standard Deviation',fontsize=11)
ax1.set_ylim([0,250])
ax4.plot(abs_track_data)
ax4.set_title('Absolute Track',fontsize=11)
ax4.set_ylim([3000,5000])
ax2.plot(splitpo)
ax2.set_title('Track Split',fontsize=11)
ax2.set_ylim([0,20])
ax3.plot(ts)
ax3.set_title('TS Standard Deviation',fontsize=11)
ax3.set_ylim([0,100])
fig.tight_layout()
plt.show()
非常感谢任何建议,如果这个答案很明显,我很抱歉,因为我是新手。
请您参考如下方法:
您可以使用 ipython 来完成。
编写脚本并将其保存为(例如)
test.py。脚本应该创建一个图形,进行绘图并显示情节:import numpy as np import matplotlib.pyplot as plt fig = plt.figure() x = np.linspace(-1, 1, 100) y = np.sin(x) plt.plot(x, y) plt.show()启动
ipython控制台使用:ipython --pylab=qt或者您想要使用的任何后端。
在
ipythonshell 中输入:%run /path/to/the/test.py这将创建一个图形,并显示情节。
然后更改您的脚本。例如将第 5 行更改为:
x = np.linspace(-0, 2, 100)在
ipythonshell 中重复%run命令:%run /path/to/the/test.py另一个图形将弹出新情节。旧图也将可见(这不会删除或替换它)。
