最终编辑:
我在关闭pyplot窗口的问题上发现,这很可能不应该使用pyplot来完成。SRK给出了一个很好的例子,说明如何处理将在下面的回答中更新的绘图。另外,我偶然发现了如何将pyplot图放入Tkinter窗口,Tkinter比pyplot更擅长打开和关闭窗口。这里is how to put a pyplot plot into a Tk window也是this is a good example。
/最终编辑
我想能够显示几个图,然后能够关闭(从屏幕上删除)他们从一些代码输入,但我不知道代码输入这样做。
以下是我迄今为止所做的尝试。我已经玩弄了显示和关闭命令的位置,但我从中得到的唯一真实结果是一个或另一个情节没有出现,但我无法从屏幕上删除一个情节。我一直在插入一个raw_input()来创建暂停。
编辑:这些图是从Tkinter图形用户界面调用的,如果有更好的方法从这个方向来做,我很高兴听到它。
如有任何意见,我们将不胜感激。
import matplotlib.pyplot as plt
a = range(0,10)
b = range(0,20,2)
c = range(0,30,3)
d = range(0,40,4)
plot1 = plt.figure()
plt.plot(a,b, 'r-o')
plt.show()
plt.close()
plot2 = plt.figure()
plt.plot(c,d, 'b-o')
plt.show()
plt.close()
编辑代码:这也不起作用。
plot1 = plt.figure(1)
plt.plot(a,b, 'r-o')
plot2 = plt.figure(2)
plt.plot(c,d, 'b-o')
#plt.close(1)
#this will prevent plot1 from being displayed
plt.show()
plt.close(1) # or ('all') or (plot1)
plt.close()
将关闭当前实例。plt.close(2)
将关闭图2plt.close(plot1)
将用实例plot1关闭图plt.close('all')
将关闭所有功能找到here。
请记住,
plt.show()
是一个阻塞函数,因此在上面使用的示例代码中,plt.close()
在窗口关闭之前不会被执行,这使得它是多余的。您可以在代码的开头使用
plt.ion()
使其非阻塞,尽管这有其他含义。示例
在我们在评论中讨论之后,我整理了一个小例子来演示如何使用plot功能。
下面我创建一个绘图:
在这种情况下,上面的
ax
是一对轴的句柄。每当我想对这些轴执行某些操作时,可以通过调用axes(ax)
将当前的轴集更改为该特定集。par_plot
是line2D实例的句柄。这叫艺术家。如果我想更改行的属性,比如更改ydata,可以通过引用这个句柄来完成。我还可以通过执行以下操作创建滑块小部件:
第一行为滑块创建新的轴(称为
axsliderA
),第二行创建放置在轴中的滑块实例sA
,第三行指定滑块值更改时要调用的函数(update
)。我的更新函数可能如下所示:
par_plot.set_ydata(y_data)
使用句柄par_plot
更改Line2D对象的ydata属性。draw()
函数更新当前轴集。总而言之:
关于上面的一个注意事项:当我运行应用程序时,代码按顺序一直运行(我认为它将
update
函数存储在内存中),直到它点击show(),这是阻塞的。当您对其中一个滑块进行更改时,它会从内存中运行更新功能(我想是这样吧?)。这就是为什么show()是以这种方式实现的,这样您就可以通过使用函数来处理数据来更改后台的值。
相关问题 更多 >
编程相关推荐