Matplotlib draw()方法不做任何事情

时间:2014-07-15 21:38:57

标签: python matplotlib

我想使用matplotlib中的draw()方法动态更新绘图。我试过简单地使用,

import matplotlib.pyplot as plt
import time

plt.plot(range(10))
plt.draw()

但字面上没有做任何事情。程序执行然后关闭而不显示绘图。我运行了以下程序,希望show方法会生成一个带有后端的绘图窗口,然后进行更新,但我得到的是后端使用第一个show命令绘制绘图,然后永远不会更新。我认为show()方法挂起会话直到窗口关闭。

import matplotlib.pyplot as plt
import time

plt.plot(range(10))
plt.show()
time.sleep(1)
plt.plot(range(50))
plt.draw()

我正在运行最新版本的Mac OS X(截至2014年7月15日)。好的,所以这不起作用。接下来我尝试使用与我的默认后端不同的后端('tkagg')。我还启用了matplotlib的交互模式(ion())。

import matplotlib
matplotlib.use('tkagg')
import matplotlib.pyplot as plt
import time

plt.ion()
plt.plot(range(10))
plt.show()
time.sleep(1)
plt.plot(range(50))
plt.draw()

接下来,我想也许不再需要show()和draw()方法,所以我删除了那些。当我这样做时,程序执行和关闭而不显示窗口。

如果draw()方法不修改画布,如何动态更新绘图。当我从命令行使用pythong解释器时,这个交互模式的东西可以工作,但是当我用“python myfile.py”执行文件时,它就不会发生了。我已经下载并尝试了一百万个示例,但实际上没有一个更新我计算机上的情节...帮助!!

1 个答案:

答案 0 :(得分:2)

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.show()
plt.plot(range(50))
plt.show()

以上对我有用。您需要关闭第一个绘图窗口才能获得第二个绘图窗口。这是因为plt.show()是阻塞函数。它会阻止程序直到您实际关闭窗口。

如果您想要在同一窗口中绘制图形。然后在matplotlib中使用交互模式。

import matplotlib.pyplot as plt
import time

plt.ion()
plt.plot(range(10))
plt.draw()
time.sleep(20)
plt.plot(range(50))
plt.draw()
time.sleep(20) 

这确实有效,但是,在我的电脑上它不会打开前景中的绘图窗口。因此,在OSX中向上滑动动画以找到窗口。