【发布时间】:2016-11-22 12:01:24
【问题描述】:
我是 Python matplotlib 的新手,想在循环中更新图形。
这是一些简单的测试代码。我想画 3 张图,每张 2 秒,每次都有不同的斜率。当然,我知道我应该阅读更多关于matplotlib 的信息,但我需要快速做一些事情。下面有什么问题?谢谢!
#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import time
def demo(a):
y = [xt*a+1 for xt in x]
ax.plot(x,y)
if __name__ == '__main__':
plt.ion()
fig, ax = plt.subplots()
ax.set_ylim([0,15])
x = range(0,5)
for a in range(1,4):
demo(a)
time.sleep(2)
我认为plt.ion() 使其具有交互性,ax.plot(x,y) 立即生效(但猜不出来)。我尝试在ax.plot(x,y) 之后添加ax.draw(),但它需要一些参数,例如艺术家或我还不知道的东西:)。另外,我收到了这条错误消息(Ubuntu 14.04.LTS)。
Xlib: extension "XInputExtension" missing on display ":1.0".
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x0
编辑:我在下面添加了正确的代码。 (根据 Estilus 的解决方案,我对其进行了一些修改以正确显示图形。
#!/usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np
import time
def demo(a):
plt.cla()
y = [xt*a+1 for xt in x]
ax.set_ylim([0,15])
ax.plot(x,y)
if __name__ == '__main__':
plt.ion()
fig, ax = plt.subplots()
x = range(5)
for a in range(1,4):
demo(a)
plt.pause(3)
plt.draw()
【问题讨论】:
标签: python python-2.7 matplotlib