"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > प्रदर्शन को बढ़ाने के लिए मैटप्लोटलिब प्लॉटिंग को कैसे तेज़ करें?

प्रदर्शन को बढ़ाने के लिए मैटप्लोटलिब प्लॉटिंग को कैसे तेज़ करें?

2024-11-06 को प्रकाशित
ब्राउज़ करें:216

How to Speed Up Matplotlib Plotting to Enhance Performance?

Matplotlib इतना धीमा क्यों है?

पायथन प्लॉटिंग लाइब्रेरी का मूल्यांकन करते समय, प्रदर्शन पर विचार करना महत्वपूर्ण है। मैटप्लोटलिब, एक व्यापक रूप से उपयोग की जाने वाली लाइब्रेरी, सुस्त लग सकती है, इसे तेज़ करने या वैकल्पिक विकल्प तलाशने के बारे में सवाल उठ रहे हैं। आइए मुद्दे पर गौर करें और संभावित समाधान तलाशें।

प्रदान किया गया उदाहरण कई सबप्लॉट और डेटा अपडेट के साथ एक प्लॉट दिखाता है। मैटप्लोटलिब के साथ, इस प्रक्रिया में अक्ष सीमाओं और टिक लेबल सहित सभी चीज़ों को फिर से तैयार करना शामिल है, जिसके परिणामस्वरूप धीमा प्रदर्शन होता है।

बाधाओं को समझना

दो प्रमुख कारक धीमेपन में योगदान करते हैं:

  1. अत्यधिक पुनः आरेखण: Matplotlib का fig.canvas.draw() फ़ंक्शन पूरे आंकड़े को फिर से बनाता है, तब भी जब केवल एक छोटे से हिस्से को अद्यतन करने की आवश्यकता होती है।
  2. प्रचुर टिक लेबल: बड़ी संख्या में टिक लेबल और सबप्लॉट ड्राइंग प्रक्रिया पर काफी बोझ डाल सकते हैं।

ब्लिटिंग के साथ अनुकूलन

इन बाधाओं को दूर करने के लिए , ब्लिटिंग का उपयोग करने पर विचार करें। ब्लिटिंग में आकृति के केवल विशिष्ट भागों को अद्यतन करना शामिल है, जिससे प्रतिपादन समय कम हो जाता है। हालाँकि, कुशल कार्यान्वयन के लिए बैकएंड-विशिष्ट कोड की आवश्यकता होती है, जिसके लिए GUI टूलकिट के भीतर Matplotlib प्लॉट्स को एम्बेड करने की आवश्यकता हो सकती है। तकनीक बैकएंड निर्भरता के बिना उचित प्रदर्शन प्रदान कर सकती है:

पृष्ठभूमि कैप्चर करें:

एनीमेशन से पहले, बाद में पुनर्स्थापित करने के लिए प्रत्येक सबप्लॉट की पृष्ठभूमि कैप्चर करें।

    अपडेट करें और ड्रा करें:
  1. प्रत्येक फ्रेम के लिए, डेटा और लाइनों के कलाकार को अपडेट करें, पृष्ठभूमि को पुनर्स्थापित करें और अद्यतन भाग को ब्लिट करें।
  2. रीड्रा से बचें:
  3. अंजीर.कैनवास.ब्लिट का उपयोग करें ax.bbox) केवल आवश्यक क्षेत्र को अद्यतन करने के लिए fig.canvas.draw() के बजाय।
  4. उदाहरण कार्यान्वयन:
matplotlib आयात करें। पीएलटी के रूप में पिप्लॉट एनपी के रूप में सुन्न आयात करें x = np.arange(0, 2*np.pi, 0.1) y = np.sin(x) अंजीर, अक्ष = plt.subplots(nrows=6) शैलियाँ = ['आर-', 'जी-', 'वाई-', 'एम-', 'के-', 'सी-'] डीईएफ़ प्लॉट(कुल्हाड़ी, शैली): वापसी ax.plot(x, y, शैली, एनिमेटेड=सच्चा)[0] पंक्तियाँ = [कुल्हाड़ी के लिए प्लॉट (कुल्हाड़ी, शैली), ज़िप में शैली (कुल्हाड़ी, शैलियाँ)] # पृष्ठभूमि कैप्चर करें पृष्ठभूमि = [कुल्हाड़ियों में कुल्हाड़ी के लिए अंजीर.canvas.copy_from_bbox(ax.bbox)] xrange में i के लिए (1, 2000): j के लिए, (रेखा, कुल्हाड़ी, पृष्ठभूमि) गणना में (ज़िप (रेखाएं, अक्ष, पृष्ठभूमि), प्रारंभ = 1): अंजीर.कैनवास.रिस्टोर_क्षेत्र(पृष्ठभूमि) लाइन.सेट_ydata(np.sin(j*x i/10.0)) ax.draw_artist(लाइन) fig.canvas.blit(ax.bbox)

एनीमेशन मॉड्यूल

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

fig, axes = plt.subplots(nrows=6)

styles = ['r-', 'g-', 'y-', 'm-', 'k-', 'c-']
def plot(ax, style):
    return ax.plot(x, y, style, animated=True)[0]

lines = [plot(ax, style) for ax, style in zip(axes, styles)]

# Capture Background
backgrounds = [fig.canvas.copy_from_bbox(ax.bbox) for ax in axes]

for i in xrange(1, 2000):
    for j, (line, ax, background) in enumerate(zip(lines, axes, backgrounds), start=1):
        fig.canvas.restore_region(background)
        line.set_ydata(np.sin(j*x   i/10.0))
        ax.draw_artist(line)
        fig.canvas.blit(ax.bbox)

matplotlib.pyplot को plt के रूप में आयात करें matplotlib.animation को एनीमेशन के रूप में आयात करें डीईएफ़ चेतन(i): जे के लिए, गणना में पंक्ति (लाइनें, प्रारंभ = 1): लाइन.सेट_ydata(np.sin(j*x i/10.0)) ani = एनीमेशन.FuncAnimation(अंजीर, चेतन, xrange(1, 200), अंतराल=0, ब्लिट=सच्चा)

विज्ञप्ति वक्तव्य यह लेख यहां पुनर्मुद्रित है: 1729342040 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3