मैं matplotlib के अंदर एक fill_between आकार को एनिमेट करने का प्रयास कर रहा हूं और मुझे नहीं पता कि पॉलीकोलेक्शन के डेटा को कैसे अपडेट किया जाए। इस सरल उदाहरण को लें: मेरे पास दो पंक्तियां हैं और मैं हमेशा उनके बीच भर रहा हूं। बेशक, रेखाएं बदलती हैं और एनिमेटेड हैं।Matplotlib एनिमेट fill_between आकार
import matplotlib.pyplot as plt
# Init plot:
f_dummy = plt.figure(num=None, figsize=(6, 6));
axes_dummy = f_dummy.add_subplot(111);
# Plotting:
line1, = axes_dummy.plot(X, line1_data, color = 'k', linestyle = '--', linewidth=2.0, animated=True);
line2, = axes_dummy.plot(X, line2_data, color = 'Grey', linestyle = '--', linewidth=2.0, animated=True);
fill_lines = axes_dummy.fill_between(X, line1_data, line2_data, color = '0.2', alpha = 0.5, animated=True);
f_dummy.show();
f_dummy.canvas.draw();
dummy_background = f_dummy.canvas.copy_from_bbox(axes_dummy.bbox);
# [...]
# Update plot data:
def update_data():
line1_data = # Do something with data
line2_data = # Do something with data
f_dummy.canvas.restore_region(dummy_background);
line1.set_ydata(line1_data);
line2.set_ydata(line2_data);
# Update fill data too
axes_dummy.draw_artist(line1);
axes_dummy.draw_artist(line2);
# Draw fill too
f_dummy.canvas.blit(axes_dummy.bbox);
सवाल fill_between पाली line1_data के आधार पर डेटा और line2_data हर बार update_data अद्यतन कैसे करने के लिए() कहा जाता है और Blit से पहले उन्हें आकर्षित है ("# अद्यतन भरने डेटा:
यहाँ एक डमी उदाहरण है भी "&" # भरें भी भरें ")। मैंने सफलता के बिना fill_lines.set_verts() की कोशिश की और एक उदाहरण नहीं मिला ...
धन्यवाद!
आपको हर फ्रेम को हटाने और पूरी तरह से फिर से खींचने की आवश्यकता हो सकती है। '* संग्रह' ऑब्जेक्ट्स अपडेट करने के साथ अच्छा नहीं खेलते हैं। इसका कारण यह है कि उन्होंने सभी मेटा-डेटा को फेंक दिया है जो आपको डेटा-स्पेस और ड्रा-स्पेस के बीच मैप करने की अनुमति देगा, और केवल ड्रॉ करने की सूची रखें। यह उन्हें तुरंत प्रस्तुत करने के लिए एक व्यापार बंद है। – tacaswell
क्या आप update_data के अंदर f_dummy.canvas.draw() का उपयोग करना चाहते हैं?मैंने इसके साथ शुरुआत की लेकिन दुर्भाग्यवश मुझे तेजी से साजिश की आवश्यकता है क्योंकि मैं रीयल-टाइम में एक सिग्नल प्रोसेसिंग और सिग्नल खेल रहा हूं और मुझे प्लेबैक को प्रभावित न करने की साजिश की आवश्यकता है (कॉल ड्रॉ() प्लेबैक स्टाल करता है)। यदि आप ध्वनि बजाने के दौरान सबकुछ फिर से निकालने के लिए एक तेज थ्रेडिंग चाल जानते हैं, तो अच्छा होगा - मैंने थ्रेडिंग के साथ ड्रॉ कहा .start (...)। मुझे पता है कि अन्य तेज साजिश पुस्तकालय हैं लेकिन मैं matplotlib पर चिपकना पसंद करता हूं और पुनर्स्थापना/ब्लिट चाल मेरे लिए पर्याप्त तेज़ी से काम करती है। – Sebastian