2015-08-17 9 views
7

जैसा कि this question में संदर्भित है, मैं iPython नोटबुक (एक सेल में) में गतिशील रूप से एक साजिश को अपडेट करने का प्रयास कर रहा हूं। अंतर यह है कि मैं नई लाइनों को साजिश नहीं करना चाहता, लेकिन यह कि मेरे x_data और y_data कुछ लूप के प्रत्येक पुनरावृत्ति पर बढ़ रहे हैं।iPython नोटबुक में गतिशील रूप से अद्यतन प्लॉट

मुझे क्या करना चाहते हैं:

import numpy as np 
import time 
plt.axis([0, 10, 0, 100]) # supoose I know what the limits are going to be 
plt.ion() 
plt.show() 
x = [] 
y = [] 
for i in range(10): 
    x = np.append(x, i) 
    y = np.append(y, i**2) 
    # update the plot so that it shows y as a function of x 
    time.sleep(0.5) 

लेकिन मैं साजिश एक किंवदंती करना चाहते हैं, और मैं एक पौराणिक कथा है जो 10 में शामिल है के साथ खत्म हो अगर मैं

from IPython import display 
import time 
import numpy as np 
plt.axis([0, 10, 0, 100]) # supoose I know what the limits are going to be 
plt.ion() 
plt.show() 
x = [] 
y = [] 
for i in range(10): 
    x = np.append(x, i) 
    y = np.append(y, i**2) 
    plt.plot(x, y, label="test") 
    display.clear_output(wait=True) 
    display.display(plt.gcf()) 
    time.sleep(0.3) 
plt.legend() 

करना आइटम नहीं है। यदि मैं लूप के अंदर plt.legend() डालता हूं, तो पौराणिक कथा प्रत्येक पुनरावृत्ति पर बढ़ती है ... कोई समाधान?

उत्तर

6

वर्तमान में, आप लूप में plt.plot हर बार एक नया एक्सिस ऑब्जेक्ट बना रहे हैं।

import numpy as np 
import time 
from IPython import display 

x = [] 
y = [] 
for i in range(10): 
    x = np.append(x, i) 
    y = np.append(y, i**2) 
    plt.gca().cla() 
    plt.plot(x,y,label='test') 
    plt.legend() 
    display.clear_output(wait=True) 
    display.display(plt.gcf()) 
    time.sleep(0.5) 

संपादित करें: रूप

इसलिए, यदि आप वर्तमान अक्ष (plt.gca().cla()) स्पष्ट इससे पहले कि आप plt.plot उपयोग करें, और लूप के अंदर कथा शब्दों में कहें, यह कथा के बिना बढ़ रहा है हर बार काम करता है @tcaswell %matplotlib notebook जादू कमांड का उपयोग करके टिप्पणियों में बताया गया है, आपको एक लाइव आकृति प्रदान करता है जो अद्यतन और पुन: क्रॉल कर सकता है।

+0

बेहतर, लेकिन अगर मैं ऐसा करता हूं, तो पौराणिक कथा तब तक दिखाई नहीं दे रही जब तक कि लूप –

+0

वास्तव में समाप्त नहीं हो जाता है? ये मेरे लिए सही है। आपने किंवदंती कहाँ रखी? इसे दो 'डिस्प्ले' लाइनों से पहले होना चाहिए – tom

+0

मैंने लूप के अंदर किंवदंती() रखा था, लेकिन लूप की आखिरी पंक्ति पर। अब मैंने इसे साजिश() के बाद रखा है और यह ठीक है –

संबंधित मुद्दे