我对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()
非常感谢任何建议,如果这个答案很明显,我很抱歉,因为我很新。
答案 0 :(得分:1)
您可以使用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
或者您想要使用的任何后端。
在ipython
shell类型中:
%run /path/to/the/test.py
这将创建一个数字,并显示情节。
之后更改脚本。例如,将第5行更改为:
x = np.linspace(-0, 2, 100)
在%run
shell中重复ipython
命令:
%run /path/to/the/test.py
另一个数字会弹出新的情节。旧图也将可见(这不会删除它或替换它)。