2013-09-30 340 views
1

here的Mac OSX交互式繪圖我發現這個代碼:蟒蛇2.7使用matplotlib不工作

import random 
from matplotlib import pyplot as plt 
import numpy as np 

plt.ion() # interactive mode 
ydata = [0] * 50 

# make plot 
ax1 = plt.axes() 
line, = plt.plot(ydata) 
plt.ylim([0, 100]) # set the y-range 

while True: 
    randint = int(random.random() * 100) 
    ymin = float(min(ydata)) - 10 
    ymax = float(max(ydata)) + 10 
    plt.ylim([ymin,ymax]) 
    ydata.append(randint) 
    del ydata[0] 
    line.set_xdata(np.arange(len(ydata))) 
    line.set_ydata(ydata) # update data 
    plt.draw() # update plot 

我收到彈出一個繪圖窗口,但似乎沒有數據沒有東西重繪......任何想法是什麼我做錯了?

+0

在Mac 10.6.8上使用python3.3和python2.7,matplotlib 1.3.0,numpy 1.7.1一切正常。你有最新的軟件包嗎?如果你使用另一個後端,會發生什麼 - 如果我插入'import matplotlib; matplotlib.use('Qt4Agg')'那麼也沒有重新繪製。 [您可能需要另一個後端](http://stackoverflow.com/questions/5091993/list-of-all-available-matplotlib-backends)?! –

+1

'matplotlib.get_backend()'返回什麼?嘗試在循環中添加一個'plt.pause(.1)'。 – tacaswell

+0

我的後端是''WXAgg' - 我不知道這是好還是壞。和暫停似乎工作! – lollercoaster

回答

5

您遇到的問題是由於gui mainloops的工作方式。當您將任何情況下調用draw事件添加到主循環要處理的事件隊列中時。如果您儘可能快地添加它們,循環永遠不會清除它的隊列,並且實際繪製到屏幕上。

添加plt.pause(.1)將暫停環路,並允許主循環(在被擬人化的風險)「抓住它的呼吸」,並更新屏幕上的小窗口

相關: