Matplotlib केवल स्थिर भूखंडों के लिए नहीं है। जबकि जीयूआई आमतौर पर जीयूआई पुस्तकालयों और ढांचे के साथ बनाए जाते हैं जैसे कि पीईक्यूटी, टिंकर, किवी और डब्ल्यूएक्सपायथन, और जबकि Python का PyQt, Tkinter के साथ उत्कृष्ट एकीकरण है और wxPython - कुछ बुनियादी GUI कार्यक्षमता के लिए इनमें से किसी का भी उपयोग करने की आवश्यकता नहीं है Matplotlib विजेट.
RSI matplotlib.widgets
मॉड्यूल में कई वर्ग हैं, जिनमें शामिल हैं AxesWidget
, जिसमे से Button
s, CheckButton
s, Slider
s, TextBox
es, आदि व्युत्पन्न हैं। ये सब स्वीकार करते हैं Axes
उन्हें एक और केवल अनिवार्य कंस्ट्रक्टर तर्क के रूप में जोड़ा जा रहा है, और उनकी स्थिति को मैन्युअल रूप से सेट करना होगा। ध्यान देने वाली बात यह है कि विजेट कुल्हाड़ी है, तो आप एक बनाएँगे Axes
प्रत्येक विजेट के लिए उदाहरण।
एक और ध्यान देने वाली बात यह है कि आपको विगेट्स के संदर्भ रखने होंगे अन्यथा, वे कचरा एकत्र कर सकते हैं।
उनमें से प्रत्येक को सेटिंग करके भी अक्षम किया जा सकता है active
सेवा मेरे False
, इस मामले में, वे किसी भी घटना का जवाब नहीं देंगे, जैसे कि क्लिक किया जाना। कहा जा रहा है, हम विभिन्न जीयूआई तत्वों और घटकों के माध्यम से, हमारे भूखंडों में एक नई प्रकार की अंतःक्रियाशीलता पेश कर सकते हैं।
नोट: Matplotlib का उपयोग उच्च-गुणवत्ता वाले GUI निर्माण के लिए नहीं किया जाता है, न ही उपयोगकर्ता के अनुकूल सिस्टम के लिए। ये विजेट अल्पविकसित हैं, वास्तव में बहुत अच्छे नहीं लगते हैं और इनकी सीमित कार्यक्षमता होती है। वे वास्तव में उन्हें शिप करने के बजाय प्रोटोटाइप और चीजों का परीक्षण करने के तरीके के रूप में हैं।
यदि आपने पहले PyQt के साथ काम किया है - तो आप देख सकते हैं कि इन विजेट्स को जोड़ने के लिए सामान्य सिंटैक्स और दृष्टिकोण, साथ ही उन्हें ईवेंट हैंडलर से कनेक्ट करना काफी परिचित है।
बटन जोड़ना
आइए शुरू करते हैं बटन - matplotlib.widgets
मॉड्यूल परिभाषित करता है a Button
कक्षा। इससे जुड़ने के लिए, हम कॉल करते हैं on_clicked()
फ़ंक्शन, जो हमारे द्वारा प्रदान किए जाने वाले फ़ंक्शन को निष्पादित करता है। एक बार क्लिक का पता चलने के बाद, फ़ंक्शन निष्पादित होता है।
बटन बनाते समय, हम असाइन करते हैं a Axes
इसके लिए, पोजिशनिंग के लिए उपयोग किया जाता है। हम a . में भी पास कर सकते हैं label
उस समय, कुछ पाठ जोड़ने और इसे उपयोगकर्ता के लिए एनोटेट करने के लिए। color
और hovercolor
तर्क बटन के रंग को उसके ऊपर मंडराने से पहले और बाद में परिभाषित करते हैं।
चूंकि हम सभी विजेट्स की स्थिति और स्थान का ध्यान रखते हैं - आइए एक . बनाएं Figure
और Axes
, एक बटन जोड़ने के लिए नीचे कुछ रिक्ति की अनुमति दें, और एक खाली स्कैटर प्लॉट प्लॉट करें। फिर, हम an . को परिभाषित करेंगे EventHandler
वर्ग, जिसमें एक ही विधि है add_random()
. विधि दो यादृच्छिक संख्याएँ उत्पन्न करती है, और उनके लिए एक मार्कर प्लॉट करती है Axes
हमने पहले बनाया है और कॉल करते हैं plt.draw()
, जो फिर से खींचता है Figure
. प्लॉट अपडेट करते समय, हमें हमेशा कॉल करना होगा plt.draw()
फिर से वास्तव में इसे अद्यतन करने के लिए:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
plot = ax.scatter([], []) class EventHandler: def add_random(self, event): x = np.random.randint(0, 100) y = np.random.randint(0, 100) ax.scatter(x, y) plt.draw() # Axes for the Button and positioning
# xposition and yposition in percentages, width, height
button_ax = plt.axes([0.7, 0.05, 0.2, 0.07])
# Create Button and assign it to `button_ax` with label
button = Button(button_ax, 'Add Random', color='green', hovercolor='red')
# On a detected click, execute add_random()
button.on_clicked(EventHandler().add_random) plt.show()
यह एक में परिणाम है Figure
, एक खाली . के साथ Axes
इसके अंदर और स्क्रीन के ऊपरी दाएं कोने में एक बटन, अपने आप में Axes
:
और एक दो दर्जन बार बटन दबाने के बाद, हमारा ax
यादृच्छिक मार्करों के साथ आबाद किया जाएगा:
अधिक व्यावहारिक शब्दों में, हम एक बना सकते हैं चक्र प्रत्येक बटन प्रेस पर प्लॉट करने के लिए सुविधाओं की। इसके लिए कुछ ट्वीक की आवश्यकता है EventHandler
, साथ ही उस चक्र के माध्यम से वापस जाने के लिए एक और बटन।
आइए का उपयोग करें रेड वाइन गुणवत्ता डेटासेट फिर से, और इसके खिलाफ कई विशेषताओं की कल्पना करें शराब विशेषता। चूंकि हमें एक फीचर को दूसरे के खिलाफ प्लॉट करने के लिए कोड लिखकर अलग-अलग प्लॉट करने की जहमत नहीं उठाई जा सकती है, और फिर उस कोड को दूसरे फीचर के खिलाफ प्लॉट करने के लिए उस कोड को संशोधित किया जा सकता है।
स्कैटर मैट्रिक्स बनाने से हमें यहां मदद मिल सकती है, लेकिन अगर डेटासेट में बहुत सारी विशेषताएं हैं, तो यह काफी अपठनीय होगा और हम बहुत दूर नहीं जाएंगे। यदि आप चाहते हैं के छात्रों बड़े पैमाने के भूखंड जिन्हें आप आसानी से देख और व्याख्या कर सकते हैं, भी बिना किसी अतिरिक्त प्रयास के साइकिल चलाने की कई विशेषताएं होने के कारण - आप इस प्रक्रिया को बटनों के साथ स्वचालित कर सकते हैं:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import Button fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2) df = pd.read_csv('winequality-red.csv')
plot = ax.scatter([], []) class EventHandler: i = 0 # Find and plot next feature, re-draw the Axes def next_feature(self, event): # If the counter is at the end of the columns # Revert it back to 0 to cycle through again if self.i >= len(df.columns): self.i = 0 # Clear Axes from last plot ax.cla() # Plot a feature against a feature located on the `i` column ax.scatter(df['alcohol'], df.iloc[:,self.i]) # Set labels ax.set_xlabel('Alcohol') ax.set_ylabel(df.columns[self.i]) # Increment i self.i += 1 # Update Figure plt.draw() def previous_feature(self, event): # If the counter is at the start of the columns # Revert it back to the last column to cycle through if self.i <= 0: self.i = len(df.columns)-1 ax.cla() ax.scatter(df['alcohol'], df.iloc[:,self.i]) ax.set_xlabel('Alcohol') ax.set_ylabel(df.columns[self.i]) self.i -= 1 plt.draw() # Add buttons
button1_ax = plt.axes([0.7, 0.02, 0.2, 0.07])
next_button = Button(button1_ax, 'Next Feature')
next_button.on_clicked(EventHandler().next_feature) button2_ax = plt.axes([0.45, 0.02, 0.2, 0.07])
previous_button = Button(button2_ax, 'Previous Feature')
previous_button.on_clicked(EventHandler().previous_feature) plt.show()
RSI EventHandler
कक्षा में अब दो विधियाँ हैं - next_feature()
और previous_feature()
. ये दोनों जांचते हैं कि क्या काउंटर i
कॉलम सूची के अंत या शुरुआत तक पहुँच गया है - और किसी से बचने के लिए IndexError
, हम सूचकांक को विपरीत मान पर रीसेट करते हैं और अनुकरण करते हैं a चक्र. नीचे जा रहे हैं 0
हमें वापस मिल जाएगा समाप्त कॉलम सूची में, और अंतिम कॉलम के ऊपर जाने से हम पहले वाले पर वापस आ जाएंगे।
यह पता लगाने के बाद कि हम कहाँ स्थित हैं - हम इसे क्लियर करें Axes
, चूंकि हम किसी मौजूदा प्लॉट के ऊपर फिर से प्लॉट कर रहे होंगे, बिना उसे क्लियर किए cla()
(clकान axes)। आप वैकल्पिक रूप से एक-दूसरे के ऊपर प्लॉट करके फीचर संबंधों को भी ढेर कर सकते हैं और इसका उपयोग कर सकते हैं cla()
चक्र के अंत/शुरू में सूचकांक को रीसेट करते समय कथन।
साफ़ करने के बाद Axes
- हमारे पास पेंट करने के लिए एक साफ़ कैनवास है ax.scatter()
समारोह। इस उदाहरण में, निश्चित सुविधा है शराब, इसलिए यह हर समय मौजूद रहता है। अन्य सुविधा भिन्न होती है, और इसके माध्यम से पहुँचा जा सकता है iloc[]
, स्तंभ के सूचकांक में गुजर रहा है। यह रिटर्न a Series
जिसे हम इस प्लॉट में इस्तेमाल कर सकते हैं। इसी तरह, हम एक्सेस कर सकते हैं स्तंभ नाम उनके सूचकांक के माध्यम से भी - df.columns[index]
, जिसका उपयोग Y-अक्ष लेबल सेट करने के लिए किया जाता है।
अंत में, हम काउंटर को बढ़ाते / घटाते हैं और कॉल करते हैं plt.draw()
अद्यतन करने के लिए Figure
:
एक बार हम पर क्लिक करें अगला फीचर बटन, कॉलम की सूची में अगली सुविधा के खिलाफ प्लॉट किया जाएगा शराब, और Figure
उचित रूप से अद्यतन किया जाएगा - लेबल, मार्कर और स्केल। वही दूसरी तरफ जाता है - पिछला फीचर विपरीत दिशा में सूची को पार करेगा, हमें एक सुरक्षा तंत्र के साथ आगे और पीछे साइकिल चलाने की इजाजत देता है जो हर बार चक्र के अंत या शुरुआत में हमारे काउंटर को रीसेट करता है।
रेडियो बटन और चेक बॉक्स जोड़ना
रेडियो बटन उपयोगकर्ता को चयन करने की अनुमति देने के लिए उपयोग किया जाता है एक मूल्य के बाहर कई मूल्य. एक समय में केवल एक रेडियो बटन का चयन किया जा सकता है, और वे आम तौर पर एक विकल्प का प्रतिनिधित्व करते हैं। चेक बॉक्स यदि आप उपयोगकर्ता को एक साथ कई विकल्प चुनने देना चाहते हैं तो इसका उपयोग किया जा सकता है।
नोट: चेकबॉक्स है या नहीं, इसकी जांच करने की क्षमता बहुत सीमित है on or बंद. वास्तव में, बॉक्स से बाहर कोई नहीं है। आप कभी भी चेक कर सकते हैं कि क्या बॉक्स है दब गया or नहीं, जो एक गंभीर सीमा बनाता है कि इसका उपयोग कैसे किया जा सकता है क्योंकि हमें पता नहीं है कि इससे पहले यह किस राज्य में था। एकमात्र विकल्प यह है कि अपने स्वयं के काउंटर/चेक को बूलियन के साथ बॉक्स की वर्तमान स्थिति के अनुसार रखें, और उसके आधार पर तर्क बदलें।
यह आपको, उदाहरण के लिए, प्रत्येक के लिए एक चेकबॉक्स जोड़ने की अनुमति देगा अनुकूलन तर्क एक निश्चित साजिश के, उपयोगकर्ता को उन्हें सेट करने की इजाजत देता है True
or False
(चेक किया गया, या अनियंत्रित), या इन राज्यों के आधार पर कोई अन्य गैर-विरोधी मानचित्रण।
हालांकि, चूंकि एपीआई अपने आप में सीमित है, इसलिए हम खुद को इच्छित उपयोग तक सीमित रखेंगे - चीजों को चालू और बंद करना। हमारे पास दो विशेषताएं होंगी, जिन्हें हम बदल सकते हैं on और बंद एक चेकबॉक्स के माध्यम से। ध्यान दें कि यह कार्यक्षमता भी उन वस्तुओं तक सीमित है जिनके लिए आप जांच सकते हैं कि वे दृश्यमान हैं या नहीं।
दूसरी ओर, हम उपयोगकर्ता को एक साथ दो पैमाने लागू करने की अनुमति नहीं देना चाहते हैं, या एक बार में दो एक्स-सीमाएं सेट करने की अनुमति नहीं देना चाहते हैं, क्योंकि अनुक्रम में केवल दूसरा कहा जाने वाला कथन लागू होगा। इनके लिए - हम Radio Buttons का उपयोग करेंगे।
आइए कुछ रेडियो बटन जोड़ते हैं ताकि उपयोगकर्ता कुछ रेडियो बटनों के माध्यम से अक्ष श्रेणी का चयन कर सके, लेकिन उन्हें फीचर विज़ुअलाइज़ेशन भी चालू कर सकें on और बंद:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons
from matplotlib.widgets import RadioButtons fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2) df = pd.read_csv('winequality-red.csv') # Plot two line plots for two features, and turn them invisible
line1, = ax.plot(df['fixed acidity'], visible=False)
line2, = ax.plot(df['citric acid'], visible=False) class EventHandler: # set_range handler def set_range(label): if (label == 'Small Range'): ax.set_xlim(0, 1600) ax.set_ylim(0, 25) else: ax.set_xlim(0, 1600) ax.set_ylim(0, 50) plt.draw() # Turn off, if on, and on if off def apply_features(label): if (label == 'Fixed Acidity'): line1.set_visible(not line1.get_visible()) elif (label == 'Citric Acid'): line2.set_visible(not line2.get_visible()) plt.draw() # Add radio buttons and checkboxes
ranges_ax = plt.axes([0.7, 0.02, 0.2, 0.1])
range_radio_buttons = RadioButtons(ranges_ax, ('Small Range', 'Large Range'))
range_radio_buttons.on_clicked(EventHandler.set_range) checkboxes_ax = plt.axes([0.4, 0.02, 0.25, 0.1])
checkboxes = CheckButtons(checkboxes_ax, ('Fixed Acidity', 'Citric Acid'))
checkboxes.on_clicked(EventHandler.apply_features) plt.show()
फिर से, हमारे पास दो विधियाँ हैं EventHandler()
कक्षा - set_range()
और apply_features()
। set_range()
विधि समायोजन करके सीमा को "छोटा" या "बड़ा" सेट करती है Axes
' एक्स और वाई-सीमा। apply_features()
फ़ंक्शन बदल देता है visible
हमारे द्वारा पहले बनाए गए रेखा भूखंडों का क्षेत्र, उनके वर्तमान के आधार पर visible
स्थिति। अगर visible == True
, हम लाइन प्लॉट को बंद कर देते हैं, और इसके विपरीत।
हमें लाइन प्लॉट्स की दृश्यता की जांच करने के लिए अंतर्निहित क्षमता पर भरोसा करना होगा, क्योंकि हम जांच नहीं कर सकते कि चेकबॉक्स को पहले चेक किया गया था या नहीं। इसी क्षमता का अनुकरण किया जा सकता है a status
के दायरे में बूलियन EventHandler()
कक्षा, जो पर सेट है True
और False
प्रत्येक क्लिक पर, प्लॉट प्रकारों के लिए जो चेकिंग का समर्थन नहीं करते हैं कि क्या वे बॉक्स से बाहर दिखाई दे रहे हैं।
इस कोड को चलाने से a Figure
नीचे बटन के दो सेट के साथ। यदि हम दोनों चेकबॉक्स चेक करते हैं, तो दोनों लाइन प्लॉट दिखाई देंगे:
हम उन्हें व्यक्तिगत रूप से बंद कर सकते हैं:
और हम की सीमा बदल सकते हैं Axes
रेडियो बटन के माध्यम से:
टेक्स्टबॉक्स जोड़ना
बक्सें आदत है इकट्ठा उपयोगकर्ता से डेटा - और हम इस डेटा के आधार पर भूखंडों को बदल सकते हैं। उदाहरण के लिए, हम किसी उपयोगकर्ता से किसी सुविधा का नाम इनपुट करने के लिए कह सकते हैं, या हमारे प्लॉट की कल्पना करने के लिए एक फ़ंक्शन सम्मिलित करने के लिए कह सकते हैं। बेशक, उपयोगकर्ता इनपुट के साथ काम करना मुश्किल हो सकता है - देखने के लिए हमेशा किनारे के मामले होते हैं।
आइए एक स्क्रिप्ट लिखें जो उपयोगकर्ता को इनपुट करने की अनुमति देता है a विशेषता का नाम डेटासेट का, और Axes
इनपुट को दर्शाने के लिए प्रत्येक सबमिशन पर अपडेट। उपयोगकर्ता की सुविधा के लिए, हम उन्हें बताएंगे कि क्या इनपुट का मिलान कॉलम नाम से नहीं किया जा सकता है:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import TextBox fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2) df = pd.read_csv('winequality-red.csv') class EventHandler: def submit(feature_name): if feature_name != "" or feature_name != None: if feature_name in df: ax.cla() ax.plot(df[feature_name]) else: if len(textbox_ax.texts) > 2: del textbox_ax.texts[-1] textbox_ax.text(-2, 0.4, feature_name + ' was not found.') plt.draw() textbox_ax = plt.axes([0.7, 0.02, 0.2, 0.1])
textbox = TextBox(textbox_ax, 'Feature Name')
textbox.on_submit(EventHandler.submit) plt.show()
हमारे पास यह देखने के लिए एक साधारण जांच है कि क्या प्रदान किया गया है feature_name
खाली है या None
, इस मामले में, हम कुछ नहीं करते हैं। यदि नहीं, तो हम जाँचते हैं कि क्या feature_name
में मौजूद है DataFrame
, एक संदेश संलग्न कर रहा है कि यदि यह मौजूद नहीं है तो सुविधा नहीं मिली। हालांकि टेक्स्ट संलग्न करने से पहले, हमें यह सुनिश्चित करना होगा कि पिछला संदेश हटा दिया गया है, ताकि नया संदेश इसके साथ ओवरलैप न हो जाए। axes.texts
संपत्ति सभी की एक सूची है Text
पर उदाहरण Axes
। चूंकि Axes
पहले से ही एक है Text
उदाहरण, हमारे से संबंधित TextBox
, हम 2 या उससे कम होने पर कुछ भी हटाना नहीं चाहते हैं Text
मौजूद उदाहरण - त्रुटि संदेश और TextBox
लेबल।
यदि दो से ऊपर है, तो हमें पहले ही एक त्रुटि संदेश मिल चुका है, जिसे हटा दिया जाना चाहिए।
यदि सुविधा is में मौजूद है DataFrame
, हालांकि, हम साफ़ करते हैं Axes
और इसे प्लॉट करें:
स्पैन चयनकर्ताओं को जोड़ना
अवधि चयनकर्ता उपयोगकर्ता को डेटा की अवधि का चयन करने और उस पर ध्यान केंद्रित करने की अनुमति देने के लिए उपयोग किया जा सकता है, उस चयन के आधार पर अक्ष सीमा निर्धारित करना। डिफ़ॉल्ट रूप से, कई पुस्तकालय इस कार्यक्षमता का समर्थन करते हैं, हालांकि दुर्भाग्य से, Matplotlib नहीं करता है और हमें इसे मैन्युअल रूप से करना होगा। इसके अतिरिक्त, हमें एक अतिरिक्त जोड़ना होगा "रीसेट" बटन अगर हम चाहते हैं ज़ूम आउट किया जा सकता है।
को जोड़ने के लिए a अवधि चयनकर्ता, हमें एक संपूर्ण नया समर्पित करने की आवश्यकता नहीं है Axes
इसके लिए - हम इसे किसी मौजूदा से जोड़ सकते हैं, जो बहुत मायने रखता है। a . उत्पन्न करते समय SpanSelector
, हम आपूर्ति करते हैं Axes
यह संबंधित है, साथ ही साथ ईवेंट हैंडलर, इसके बाद 'horizontal'
or 'vertical'
, जो घुमाता है Axes
और अवधि चयनकर्ता दोनों.
RSI useblit
तर्क आम तौर पर सेट किया जाता है True
क्योंकि यह अधिकांश बैकएंड पर प्रदर्शन को बढ़ाता है। इसके अतिरिक्त, हमने कुछ स्टाइलिंग गुण जोड़े हैं, जैसे कि alpha
एक स्पैन चयनकर्ता के रूप में बनाया गया आयत का 0.5
और facecolor
एक अच्छा करने के लिए tab:blue
:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import SpanSelector
from matplotlib.widgets import Button fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2) df = pd.read_csv('AmesHousing.csv') ax.scatter(x = df['Year Built'], y = df['Total Bsmt SF'], alpha = 0.6) class EventHandler: def select_horizontal(x, y): ax.set_xlim(x, y) plt.draw() def reset(self): ax.set_xlim(df['Year Built'].min(), df['Year Built'].max()) plt.draw span_horizontal = SpanSelector(ax, EventHandler.select_horizontal, 'horizontal', useblit=True, rectprops=dict(alpha=0.5, facecolor='tab:blue')) button_ax = plt.axes([0.7, 0.02, 0.2, 0.07])
button = Button(button_ax, 'Reset')
button.on_clicked(EventHandler.reset) plt.show()
इसे चलाने से एक प्लॉट तैयार होता है जिस पर हम दिए गए मानों के लिए एक्सिस-लिमिट सेट करके स्पैन का चयन कर सकते हैं और उन पर ज़ूम इन कर सकते हैं:
स्लाइडर जोड़ना
Sliders उपयोगकर्ताओं को एक मार्कर को खिसकाकर और एक मान का चयन करके सहज रूप से कई मानों के बीच चयन करने की अनुमति देता है। आमतौर पर, स्लाइडर्स का उपयोग प्लॉट पर कुछ मान को लगातार अपडेट करने के लिए किया जाता है, जैसे कि इसकी रेंज or एक विशेषता भी। उदाहरण के लिए, आप एक स्लाइडर के माध्यम से स्थिरांक के मान को समायोजित कर सकते हैं, जो बदले में उस स्थिरांक पर निर्भर फ़ंक्शन को प्रभावित करता है।
आइए एक स्क्रिप्ट लिखें जो हमें एक स्लाइडर के माध्यम से Y और X-अक्ष की सीमा को बदलने की अनुमति देती है, जो हमें उस परिप्रेक्ष्य को बदलने देगी जिससे हम अपना डेटा देख रहे हैं:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2, left=0.2) df = pd.read_csv('winequality-red.csv')
plot, = ax.plot(df['volatile acidity']) class EventHandler: def update(val): ax.set_ylim(0, yslider.val) ax.set_xlim(0, xslider.val) plt.draw() xslider_ax = plt.axes([0.35, 0.03, 0.5, 0.07])
xslider = Slider( ax=xslider_ax, label="X-limit", valmin=0, valmax=len(df['volatile acidity']), valinit=len(df['volatile acidity']), orientation="horizontal"
) yslider_ax = plt.axes([0.03, 0.2, 0.07, 0.5])
yslider = Slider( ax=yslider_ax, label="Y-limit", valmin=0, valmax=3, valinit=1.5, orientation="vertical"
) xslider.on_changed(EventHandler.update)
yslider.on_changed(EventHandler.update) plt.show()
हमने पैडिंग को बाईं ओर और नीचे स्लाइडर की अनुमति देने के लिए समायोजित किया है Axes
, और एक साधारण लाइन प्लॉट प्लॉट किया। स्लाइडर जोड़ने के लिए हमें एक बनाना होगा Axes
इसके लिए, अधिकांश अन्य विजेट्स की तरह, और इसे असाइन करें ax
का तर्क Slider
कंस्ट्रक्टर के माध्यम से। इसके अतिरिक्त, हम स्लाइडर के न्यूनतम, अधिकतम और प्रारंभिक मान सेट कर सकते हैं। ये आमतौर पर आपके द्वारा प्लॉट किए जा रहे डेटा के आधार पर डायनामिक रेंज होंगे, लेकिन इन्हें मैन्युअल रूप से स्केलर मान भी सेट किया जा सकता है।
अंत में, Slider
s क्षैतिज या लंबवत रूप से उन्मुख हो सकते हैं। चूंकि वे माउस-स्वाइप के माध्यम से लगातार अपडेट होने के लिए हैं - the on_changed()
जब कोई उपयोगकर्ता इनपुट देता है तो प्रतिक्रिया को ट्रिगर करने के लिए फ़ंक्शन का उपयोग किया जाता है। हमने इसे ट्वीक किया है EventHandler
एक के साथ कक्षा update()
फ़ंक्शन जो बस के आधार पर एक्स और वाई-सीमा के मूल्यों को समायोजित करता है val
संबंधित स्लाइडर के ue.
इस कोड को चलाने से दो स्लाइडर के साथ एक प्लॉट तैयार होगा, जिसका उपयोग हम इसके दायरे को बदलने के लिए कर सकते हैं Axes
:
- पहुँच
- सब
- की अनुमति दे
- पहले ही
- अन्य
- एपीआई
- दृष्टिकोण
- तर्क
- चारों ओर
- शुरू
- जा रहा है
- मुक्केबाज़ी
- में निर्मित
- कॉल
- कौन
- मामलों
- परिवर्तन
- जाँच
- कोड
- स्तंभ
- सका
- युगल
- बनाना
- वर्तमान
- वर्तमान स्थिति
- तिथि
- समर्पित
- पता चला
- दर्जन
- गतिशील
- आसानी
- Edge
- कार्यक्रम
- घटनाओं
- उदाहरण
- उत्कृष्ट
- Feature
- विशेषताएं
- प्रथम
- फोकस
- पाया
- समारोह
- कार्यक्षमता
- सामान्य जानकारी
- जा
- महान
- हरा
- होने
- मदद
- यहाँ उत्पन्न करें
- कैसे
- HTTPS
- विचार
- सहित
- अनुक्रमणिका
- एकीकरण
- IT
- लेबल
- बड़ा
- सीमित
- लाइन
- सूची
- मैट्रिक्स
- अधिकांश
- संख्या
- ऑप्शंस
- अन्य
- अन्यथा
- प्रदर्शन
- परिप्रेक्ष्य
- वर्तमान
- दबाना
- प्रक्रिया
- उत्पादन
- संपत्ति
- रेडियो
- रेंज
- RE
- प्रतिक्रिया
- परिणाम
- रिटर्न
- सुरक्षा
- कहा
- स्केल
- स्क्रीन
- चयनित
- भावना
- सेट
- की स्थापना
- सरल
- छोटा
- So
- अंतरिक्ष
- प्रारंभ
- राज्य
- कथन
- राज्य
- स्थिति
- आपूर्ति
- समर्थन
- सिस्टम
- परीक्षण
- यहाँ
- पहर
- ऊपर का
- अपडेट
- अपडेट
- us
- उपयोगकर्ताओं
- मूल्य
- देखें
- दृश्यता
- दिखाई
- या
- बिना
- काम किया
- काम कर रहे
- लिख रहे हैं
- X
- वर्ष
- ज़ूम