วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib

Matplotlib ไม่ได้มีไว้สำหรับแปลงแบบคงที่เท่านั้น ในขณะที่ GUI ถูกสร้างขึ้นด้วยไลบรารี GUI และเฟรมเวิร์กเช่น ไพคิว, ไทเกอร์, ที่ผิดหวัง และ wxPythonและในขณะที่ Python มีการรวมที่ยอดเยี่ยมกับ PyQt, Tkinter และ wxPython – ไม่จำเป็นต้องใช้สิ่งเหล่านี้สำหรับฟังก์ชัน GUI พื้นฐานบางอย่างผ่าน วิดเจ็ต Matplotlib.

พื้นที่ matplotlib.widgets โมดูลมีหลายคลาสรวมถึง AxesWidgetซึ่ง Buttons, CheckButtons, Sliders, TextBoxes ฯลฯ จะได้รับ ทั้งหมดนี้ยอมรับ Axes พวกเขากำลังถูกเพิ่มเป็นอาร์กิวเมนต์คอนสตรัคเตอร์ที่บังคับเพียงหนึ่งเดียวและต้องกำหนดตำแหน่งด้วยตนเอง สิ่งที่ควรทราบก็คือ วิดเจ็ตคือแกนดังนั้นคุณจะสร้าง Axes อินสแตนซ์สำหรับแต่ละวิดเจ็ต

สิ่งที่ควรทราบอีกอย่างคือ คุณต้องอ้างอิงถึงวิดเจ็ต มิฉะนั้นก็อาจจะเก็บขยะได้

แต่ละคนสามารถปิดการใช้งานได้โดยการตั้งค่า active ไปยัง Falseซึ่งในกรณีนี้จะไม่ตอบสนองต่อเหตุการณ์ใดๆ เช่น การถูกคลิก ดังที่กล่าวไปแล้ว เราสามารถแนะนำการโต้ตอบรูปแบบใหม่ให้กับโครงเรื่องของเรา ผ่านองค์ประกอบและส่วนประกอบ GUI ต่างๆ

หมายเหตุ Matplotlib ไม่ได้มีไว้สำหรับใช้ในการสร้าง GUI คุณภาพสูง หรือระบบที่ใช้งานง่าย วิดเจ็ตเหล่านี้เป็นพื้นฐาน ไม่ได้ดูดีนักและมีฟังก์ชันที่จำกัด พวกมันมีไว้เพื่อเป็นแนวทางในการสร้างต้นแบบและทดสอบสิ่งต่าง ๆ มากกว่าที่จะจัดส่งจริง ๆ

หากคุณเคยใช้งาน PyQt มาก่อน คุณอาจสังเกตเห็นว่ารูปแบบทั่วไปและวิธีการเพิ่มวิดเจ็ตเหล่านี้ รวมถึงการเชื่อมต่อกับตัวจัดการเหตุการณ์นั้นค่อนข้างคุ้นเคย

การเพิ่มปุ่ม

มาเริ่มกันที่ คลิกที่ปุ่ม - matplotlib.widgets โมดูลกำหนด a Button ระดับ. เพื่อเชื่อมต่อกับมัน เราเรียกว่า on_clicked() ฟังก์ชั่นซึ่งดำเนินการฟังก์ชั่นที่เราจัดหา เมื่อตรวจพบการคลิกแล้ว ฟังก์ชันจะทำงาน

ขณะสร้างปุ่ม เรากำหนดan Axes ไปใช้สำหรับวางตำแหน่ง เรายังสามารถผ่านใน label ในขณะนั้น เพื่อเพิ่มข้อความและใส่คำอธิบายประกอบให้กับผู้ใช้ ดิ color และ hovercolor อาร์กิวเมนต์กำหนดสีของปุ่มก่อนและหลังวางเมาส์เหนือ

เนื่องจากเราดูแลตำแหน่งและพื้นที่สำหรับวิดเจ็ตทั้งหมด – มาสร้าง a . กันเถอะ 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:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

และหลังจากกดปุ่มสองสามครั้ง ของเรา ax จะถูกเติมด้วยเครื่องหมายสุ่ม:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ในทางปฏิบัติเราสามารถสร้าง a วงจร ของคุณสมบัติที่จะได้รับการวางแผนในการกดปุ่มแต่ละครั้ง สิ่งนี้ต้องการการปรับแต่งเล็กน้อยเพื่อ EventHandlerรวมถึงปุ่มอื่นเพื่อย้อนกลับไปยังรอบนั้น

มาใช้ไฟล์ คุณภาพไวน์แดง ชุดข้อมูลอีกครั้ง และแสดงภาพคุณลักษณะหลายอย่างเทียบกับ แอลกอฮอล์ คุณสมบัติ. เนื่องจากเราไม่สามารถใส่ใจที่จะพล็อตสิ่งเหล่านี้ทีละรายการโดยการเขียนโค้ดเพื่อพล็อตจุดสนใจหนึ่งเทียบกับอีกจุดหนึ่ง จากนั้นจึงแก้ไขโค้ดนั้นเพื่อพล็อตจุดสนใจอื่นเทียบกับอีกจุดหนึ่ง

การสร้าง Scatter Matrix อาจช่วยเราได้ แต่ถ้าชุดข้อมูลมีคุณลักษณะมากมาย ก็จะอ่านไม่ได้และเราจะไปได้ไม่ไกล หากคุณต้องการที่จะมี ทั้งสอง แปลงขนาดใหญ่ที่คุณสามารถดูและตีความได้อย่างง่ายดาย เช่นกัน เนื่องจากมีคุณสมบัติหลายอย่างที่หมุนเวียนไปโดยไม่ต้องใช้ความพยายามใดๆ เป็นพิเศษ คุณสามารถทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติด้วยปุ่มต่างๆ:

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()

พื้นที่ EventHandler คลาสตอนนี้มีสองวิธี - next_feature() และ previous_feature(). ทั้งสองนี้ตรวจสอบว่าเคาน์เตอร์ i ถึงจุดสิ้นสุดหรือจุดเริ่มต้นของรายการคอลัมน์ – และเพื่อหลีกเลี่ยง IndexErrorเรารีเซ็ตดัชนีเป็นค่าตรงข้ามและจำลองa วงจร. ลงไปข้างล่าง 0 จะพาเรากลับไปที่ ปลาย ของรายการคอลัมน์ และอยู่เหนือคอลัมน์สุดท้าย เราจะเปลี่ยนกลับเป็นคอลัมน์แรก

หลังจากตรวจสอบแล้วว่าเราอยู่ที่ไหน – เรา ล้าง Axesเนื่องจากเราจะพล็อตอีกครั้งบนพล็อตที่มีอยู่โดยไม่ล้างผ่าน cla() (clหู aเอ็กซ์). คุณยังสามารถสร้างความสัมพันธ์ของคุณลักษณะได้เช่นกัน โดยพล็อตทับกันและใช้ cla() คำสั่งเมื่อรีเซ็ตดัชนีเมื่อสิ้นสุด/เริ่มรอบ

หลังจากล้าง Axes – เรามีผ้าใบใสสำหรับทาสีด้วย ax.scatter() การทำงาน. ในตัวอย่างนี้ คุณลักษณะคงที่คือ แอลกอฮอล์ดังนั้นจึงมีอยู่ตลอดเวลา คุณสมบัติอื่น ๆ แตกต่างกันไปและสามารถเข้าถึงได้ผ่าน iloc[]ผ่านดัชนีของคอลัมน์ ส่งคืน a Series ที่เราสามารถนำมาใช้ในพล็อตนี้ได้ ในทำนองเดียวกันเราสามารถเข้าถึง ชื่อคอลัมน์ ผ่านดัชนีของพวกเขาเช่นกัน - df.columns[index]ซึ่งใช้สำหรับตั้งค่าป้ายกำกับแกน Y

สุดท้ายเราเพิ่ม/ลดตัวนับและเรียก plt.draw() เพื่ออัปเดตไฟล์ Figure:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เมื่อเราคลิกที่ไฟล์ คุณสมบัติถัดไป ปุ่ม คุณลักษณะถัดไปในรายการของคอลัมน์จะถูกพล็อตกับ แอลกอฮอล์และ Figure จะได้รับการปรับปรุงอย่างเหมาะสม – ฉลาก เครื่องหมาย และมาตราส่วน เช่นเดียวกันในทางกลับกัน - คุณสมบัติก่อนหน้า จะข้ามรายการไปในทิศทางตรงกันข้ามทำให้เราสามารถวนไปมาได้ด้วยกลไกความปลอดภัยที่รีเซ็ตตัวนับทุกครั้งที่เราไปถึงจุดสิ้นสุดหรือจุดเริ่มต้นของวงจร

การเพิ่มปุ่มตัวเลือกและกล่องกาเครื่องหมาย

ปุ่มวิทยุ ใช้สำหรับให้ผู้ใช้เลือก ค่าเดียว จาก หลายค่า. สามารถเลือกปุ่มตัวเลือกได้ครั้งละหนึ่งปุ่มเท่านั้น และโดยทั่วไปแล้วจะเป็นตัวแทนของตัวเลือก กล่องกาเครื่องหมาย สามารถใช้หากคุณต้องการให้ผู้ใช้เลือกหลายตัวเลือกพร้อมกัน

หมายเหตุ มีความสามารถจำกัดมากในการตรวจสอบว่าช่องทำเครื่องหมายคือ on or ปิด. อันที่จริงไม่มีอะไรนอกกรอบ คุณสามารถตรวจสอบได้ว่ากล่องนั้นคือ กด or ไม่ซึ่งเป็นข้อจำกัดอย่างร้ายแรงต่อวิธีการใช้งาน เนื่องจากเราไม่รู้ว่ามันอยู่ในสถานะใดก่อนหน้านั้น ทางเลือกเดียวคือรักษาตัวนับ/ตรวจสอบสถานะปัจจุบันของกล่องด้วยบูลีน และแก้ไขตรรกะตามนั้น

ซึ่งจะทำให้คุณสามารถเพิ่มช่องทำเครื่องหมายสำหรับแต่ละ อาร์กิวเมนต์การปรับแต่ง ของพล็อตบางอย่างทำให้ผู้ใช้สามารถตั้งค่าได้ True or False (ตรวจสอบหรือไม่เลือก) หรือการทำแผนที่ที่ไม่ขัดแย้งอื่น ๆ ตามสถานะเหล่านี้

แม้ว่า API จะถูกจำกัดในตัวเอง เราจะจำกัดตัวเองให้ใช้งานได้ตามจุดประสงค์เช่นกัน – การเปิดและปิดสิ่งต่างๆ เราจะมีคุณลักษณะสองอย่างที่เราเปลี่ยนได้ on และ ปิด ผ่านช่องทำเครื่องหมาย โปรดทราบว่าแม้ฟังก์ชันนี้จะจำกัดเฉพาะออบเจ็กต์ซึ่งคุณสามารถตรวจสอบได้ว่ามองเห็นหรือไม่

ในทางกลับกัน เราไม่ต้องการให้ผู้ใช้ใช้มาตราส่วนสองมาตราส่วนในคราวเดียว หรือตั้งค่าขีดจำกัด X สองชุดพร้อมกัน เนื่องจากจะใช้เฉพาะคำสั่งที่เรียกว่าวินาทีในลำดับเท่านั้น สำหรับสิ่งเหล่านี้ – เราจะใช้ปุ่มตัวเลือก

เพิ่มปุ่มตัวเลือกสองสามปุ่มเพื่อให้ผู้ใช้เลือกช่วงแกนผ่านปุ่มตัวเลือกสองปุ่ม แต่ยังอนุญาตให้พวกเขาเปิดการแสดงภาพคุณสมบัติ 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' ขีดจำกัด X และ Y ดิ apply_features() ฟังก์ชันเปลี่ยน visible ฟิลด์ของ Line Plots ที่เราทำไว้ก่อนหน้านี้โดยอิงจากปัจจุบัน visible สถานะ. ถ้า visible == Trueเราปิด Line Plot และในทางกลับกัน

เราต้องพึ่งพาความสามารถในตัวเพื่อตรวจสอบการมองเห็นของ Line Plots เนื่องจากเราไม่สามารถตรวจสอบว่ามีการทำเครื่องหมายที่ช่องทำเครื่องหมายก่อนหน้านี้หรือไม่ ความสามารถเดียวกันนี้สามารถจำลองได้ด้วย a status บูลีนในขอบเขตของ EventHandler() คลาสซึ่งถูกกำหนดเป็น True และ False ทุกครั้งที่คลิก สำหรับประเภทพล็อตที่ไม่รองรับการตรวจสอบว่ามองเห็นได้ทันทีหรือไม่

การรันโค้ดนี้ส่งผลให้ a Figure ด้วยปุ่มสองชุดที่ด้านล่าง หากเราทำเครื่องหมายที่ช่องทั้งสอง แผนผังเส้นทั้งสองจะปรากฏขึ้น:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เราสามารถปิดได้ทีละรายการ:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

และเราสามารถเปลี่ยนช่วงของ Axes ผ่านปุ่มตัวเลือก:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การเพิ่มกล่องข้อความ

กล่องข้อความ จะใช้ในการ รวบรวม ข้อมูลจากผู้ใช้ – และเราสามารถแก้ไขแปลงตามข้อมูลนี้ ตัวอย่างเช่น เราสามารถขอให้ผู้ใช้ป้อนชื่อของจุดสนใจ หรือแทรกฟังก์ชันเพื่อให้โครงเรื่องของเราแสดงเป็นภาพ แน่นอนว่าการทำงานกับข้อมูลที่ผู้ใช้ป้อนอาจเป็นเรื่องยุ่งยาก – มักมีกรณีที่ต้องระวังอยู่เสมอ

มาเขียนสคริปต์ที่อนุญาตให้ผู้ใช้ป้อน 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 อินสแตนซ์บน an Axes. ตั้งแต่ Axes มีแล้ว Text ที่เป็นของเรา TextBox, เราไม่ต้องการที่จะลบอะไรถ้ามี 2 หรือน้อยกว่า Text อินสแตนซ์ที่มีอยู่ – ข้อความแสดงข้อผิดพลาดและ TextBox ฉลาก.

หากเกินสอง เราได้รับข้อความแสดงข้อผิดพลาดแล้ว ซึ่งควรลบออก

ถ้าคุณสมบัติ is ปัจจุบันใน DataFrameแม้ว่าเราจะล้าง Axes และพล็อตมัน:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การเพิ่มตัวเลือกช่วง

ตัวเลือกช่วง สามารถใช้เพื่อให้ผู้ใช้เลือกช่วงข้อมูลและโฟกัสไปที่ข้อมูลนั้นได้ โดยตั้งค่าขีดจำกัดของแกนตามการเลือกนั้น ตามค่าเริ่มต้น ไลบรารีจำนวนมากรองรับฟังก์ชันนี้ แม้ว่า Matplotlib ไม่รองรับและเราจะต้องดำเนินการด้วยตนเอง นอกจากนี้เราจะต้องเพิ่มพิเศษ “ รีเซ็ต” ปุ่มถ้าเราต้องการ ซูมออก เช่นกัน

เพื่อเพิ่มไฟล์ ตัวเลือกช่วง,เราไม่ต้องทุ่มเทใหม่หมด Axes สำหรับมัน – เราสามารถแนบมันกับสิ่งที่มีอยู่ซึ่งสมเหตุสมผลมาก เมื่อสร้าง SpanSelectorเราจัดหา Axes มันเป็นของเช่นเดียวกับตัวจัดการเหตุการณ์ตามด้วย 'horizontal' or 'vertical'ซึ่งหมุน Axes และ Span Selector ทั้งคู่.

พื้นที่ useblit อาร์กิวเมนต์มักจะถูกตั้งค่าเป็น True เพราะมันช่วยเพิ่มประสิทธิภาพให้กับแบ็กเอนด์ส่วนใหญ่ นอกจากนี้ เราได้เพิ่มคุณสมบัติการจัดรูปแบบบางอย่าง เช่น การตั้งค่า alpha ของสี่เหลี่ยมที่สร้างเป็น Span Selector to 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()

การรันสิ่งนี้จะสร้างพล็อตที่เราสามารถเลือกสแปนและซูมเข้าไปได้โดยการตั้งค่า Axes-limits เป็นค่าที่ให้มา:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

การเพิ่มแถบเลื่อน

Sliders ให้ผู้ใช้เลือกระหว่างค่าต่างๆ ได้โดยสัญชาตญาณโดยการเลื่อนเครื่องหมายและเลือกค่า โดยทั่วไป แถบเลื่อนจะใช้เพื่ออัปเดตค่าบางอย่างบนพล็อตอย่างต่อเนื่อง เช่น range 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()

เราได้ปรับ padding เพื่อให้มีแถบเลื่อนทางด้านซ้ายและด้านล่างของ Axesและพล็อตเส้นพล็อตอย่างง่าย การเพิ่มตัวเลื่อนต้องการให้เราทำ Axes สำหรับมัน เช่นเดียวกับวิดเจ็ตอื่น ๆ ส่วนใหญ่ และกำหนดให้กับ ax อาร์กิวเมนต์ของ Slider ผ่านตัวสร้าง นอกจากนี้ เราสามารถตั้งค่าต่ำสุด สูงสุด และเริ่มต้นของตัวเลื่อนได้ โดยทั่วไปแล้วสิ่งเหล่านี้จะเป็นช่วงไดนามิก โดยขึ้นอยู่กับข้อมูลที่คุณกำลังวางแผน แต่สามารถตั้งค่าสเกลาร์ด้วยตนเองได้เช่นกัน

ในที่สุด Sliders สามารถวางในแนวนอนหรือแนวตั้งได้ เนื่องจากพวกเขาตั้งใจที่จะอัปเดตอย่างต่อเนื่องผ่านการปัดเมาส์ – the on_changed() ฟังก์ชั่นใช้เพื่อกระตุ้นการตอบสนองเมื่อผู้ใช้ป้อนข้อมูล เราได้ปรับแต่ง EventHandler ชั้นเรียนที่มี an update() ฟังก์ชันที่เพียงแค่ปรับค่าของขีดจำกัด X และ Y ตามค่า value ของตัวเลื่อนตามลำดับ

การรันโค้ดนี้จะสร้างพล็อตที่มีตัวเลื่อนสองตัว ซึ่งเราสามารถใช้เพื่อเปลี่ยนขอบเขตของ Axes:

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

วิดเจ็ต Matplotlib PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ประทับเวลา:

เพิ่มเติมจาก สแต็ค