我很抱歉,因为我之前就相关主题打开了另一张票。感谢我现在得到的答案,我可以更具体。我也收到了一些基于 Tkinter 的解决方案,但我想用事件和循环来解决我的问题。
我正在处理的特殊情况如下:我有一个数组数组。我希望 matplotlib 绘制它的第一个元素,允许我按一个键(带有关联事件),然后程序绘制第二个数组,相同的行为,等等。
举个简单的例子:
import matplotlib.pyplot as plt
import numpy as np
# Define the event
def ontype(event):
if event.key == '1':
print 'It is working'
plt.clf()
# Create figure an connect the event to it
fig=plt.figure(figsize=(16,8))
plt.gcf().canvas.mpl_connect('key_press_event',ontype)
# Loop
for element in xrange(10):
#This mimicks the "array of arrays" generating a random array in each loop
vector = np.random.random(10)
plt.plot(vector)
plt.show()
我希望得到第一个图(循环第一次运行),并且在我按 1 之前它一直保持打开状态。但是,我得到的是一个绘制了十个向量的图,当我按 1 时,这个图是清除并通过终端显示“它正在工作”。我需要程序来绘制第一个元素,并在按下一个键后移至下一个元素。对此有任何提示吗?我究竟做错了什么?
感谢你们!
编辑:
请记住,原则上,程序的结构不能改变,并且在绘制任何东西之前需要 for 循环来计算不同的东西。因此,该程序应该去
def ontype(event):
define event
Some stuff
elements = array of arrays
for element in elements:
do more stuff
plot element and "stay" in this plot untill any event key is pressed. And then, go to the next element in elements and do the same
编辑2:
我认为我没有正确解释自己,并且可能会误解这种数据。就我而言,我正在阅读一个巨大的数据表,每一行都是不同的来源。我试图绘制的是列的信息。我是一名物理学家,所以我对时尚编程或任何东西知之甚少。问题是......如果没有办法用 for 循环做到这一点,谁能解释我如何在没有它的情况下完成这种工作?