2015-09-02 433 views
0

我想做類似這樣的事情,其中​​圖形是相同的。python matplotlib:在逐步繪製更多的圖之後顯示相同的圖形

fig = plt.figure() 

plt.plot(x1,y1) 

plt.show() 

所以它會顯示在X1在圖1中的一個點,Y1

然後,如果我做一個鼠標點擊或按一個鍵,沿着線的東西:

plt.plot(x2,y2) 

plt.show() 

但是數字窗口不應該關閉,它應該在其上面繪製一個新點。

我想爲數學演示做這種事情,我知道它甚至沒有必要,但我有這個想法,並想知道是否有可能爲python。過去我已經完成了MATLAB,而且這樣的事情要容易得多。

回答

0

最簡單的方法是在matplotlib中啓用「交互模式」,該模式會自動在變化上繪製。這是在命令行中做事的好方法,相當於MATLAB如何做。但是,它是速度較慢,所以最好不要使用它在腳本中,所以它不是默認:

import matplotlib.pyplot as plt 

x1 = 1 
x2 = 2 

y1 = 1 
y2 = 4 

plt.ion() # turn on interactive mode 
plt.figure() 
plt.xlim(0, 10) # set the limits so they don't change while plotting 
plt.ylim(0, 10) 
plt.hold(True) # turn hold on 

plt.plot(x1, y1, 'b.') 

input() # wait for user to press "enter", raw_input() on python 2.x 

plt.plot(x2, y2, 'b.') 
plt.hold(False) # turn hold off 

爲一個循環,它的工作是這樣的:

import matplotlib.pyplot as plt 
import numpy as np 

xs = np.arange(10) 
ys = np.arange(10)**2 

plt.ion() 
plt.figure() 
plt.xlim(0, 10) 
plt.ylim(0, 100) 
plt.hold(True) 

for x, y in zip(xs, ys): 
    plt.plot(x, y, 'b.') 
    input() 

plt.hold(False) 

如果您使用IPython,但是,您可以使用%pylab,它負責導入所有內容並啓用交互模式:

%pylab 

xs = arange(10) 
ys = arange(10)**2 

figure() 
xlim(0, 10) # set the limits so they don't change while plotting 
ylim(0, 100) 
hold(True) 

for x, y in zip(xs, ys): 
    plot(x, y, 'b.') 
    input() # raw_input() on python 2.x 

hold(False) 
相關問題