Matplotlib - 複選框



什麼是複選框?

Matplotlib 的複選框提供了一種強大的機制,可以向我們的繪圖新增互動式複選框功能。此功能允許使用者動態切換繪圖中特定元素、資料集或註釋的可見性。當處理複雜的視覺化效果時,複選框特別有用,因為顯示或隱藏某些元件可以增強資料呈現的清晰度。

複選框概述

複選框由一組與繪圖中特定操作或功能關聯的複選框組成。使用者可以與這些複選框互動以控制相應元素的可見性或行為。常見的用例包括切換不同資料集的顯示、顯示或隱藏註釋或啟用/停用繪圖中的特定功能。

將複選框應用於繪圖的分步過程。

建立複選框

匯入必要的庫

為了將複選框應用於 matplotlib 繪圖,首先我們必須使用以下程式碼匯入必要的庫。

import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

建立圖形和軸

在 Matplotlib 中建立圖形和軸以與複選框一起使用,涉及設定畫布(圖形)和繪圖區域(軸)。以下是如何建立圖形和軸以及將其與複選框一起使用的示例。

示例

import matplotlib.pyplot as plt
# Creating a figure and axes
fig, ax = plt.subplots()
# Plotting elements with initial visibility based on the list
line1, = ax.plot([1, 2, 3], [4, 5, 6], label='Line 1')
line2, = ax.plot([1, 2, 3], [6, 5, 4], label='Line 2')
line3, = ax.plot([1, 2, 3], [2, 1, 2], label='Line 3')
plt.show()
輸出
Fig Axes

定義初始可見性狀態

在使用 Matplotlib 中的複選框時,定義初始可見性狀態是一個關鍵步驟。初始可見性狀態確定關聯的元素(例如繪圖中的線條)最初是可見還是隱藏。以下是如何為複選框定義初始可見性狀態。

示例

在此示例中,列表visibility_status包含三個布林值,例如TrueFalse,每個值對應於特定元素的初始可見性狀態。

import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons
def update_visibility(label):
   if label == 'Line 1':
      line1.set_visible(not line1.get_visible())
   elif label == 'Line 2':
      line2.set_visible(not line2.get_visible())
   elif label == 'Line 3':
      line3.set_visible(not line3.get_visible())
   plt.draw()
# Creating a figure and axes
fig, ax = plt.subplots()
# Defining initial visibility status
visibility_status = [True, True, True]
# Plotting elements with initial visibility based on the list
line1, = ax.plot([1.5, 4.2, 6.3], [4, 5, 6], label='Line 1', visible=visibility_status[0])
line2, = ax.plot([1.23, 2.2, 1.3], [6, 5, 4], label='Line 2', visible=visibility_status[1])
line3, = ax.plot([1, 2, 3], [2, 1, 2], label='Line 3', visible=visibility_status[2])
plt.show()
輸出
Visibility

繪製元素並根據複選框狀態更新繪圖

建立我們想要使用複選框控制的元素,並將它們新增到繪圖中。

建立複選框

定義繪圖中複選框的位置和尺寸,並建立 CheckButtons 物件。CheckButtons 物件與每條線的複選框相關聯,而 visibility_status 列表確定它們的初始狀態。

連線複選框點選事件

將複選框的點選事件連線到更新函式。

示例
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons
# Creating a figure and axes
fig, ax = plt.subplots()
# Defining initial visibility status
visibility_status = [True, True, True]
# Plotting elements with initial visibility based on the list
line1, = ax.plot([1, 2, 3], [4, 5, 6], label='Line 1', visible=visibility_status[0])
line2, = ax.plot([1, 2, 3], [6, 5, 4], label='Line 2', visible=visibility_status[1])
line3, = ax.plot([1, 2, 3], [2, 1, 2], label='Line 3', visible=visibility_status[2])
# Creating Check Buttons
check_ax = plt.axes([0.7, 0.05, 0.2, 0.1])
check_buttons = CheckButtons(check_ax, ['Line 1', 'Line 2', 'Line 3'], visibility_status)
# Function to update visibility based on checkbox state
def update_visibility(label):
   if label == 'Line 1':
      line1.set_visible(not line1.get_visible())
   elif label == 'Line 2':
      line2.set_visible(not line2.get_visible())
   elif label == 'Line 3':
      line3.set_visible(not line3.get_visible())
   plt.draw()
# Connecting Check Button Click Event
check_buttons.on_clicked(update_visibility)
plt.show()
輸出
Plot CheckButtons

自定義和互動

我們可以根據我們的需求和需要應用自定義和互動。

複選框標籤 - 自定義複選框的標籤以匹配它們控制的元素。

顏色和樣式 - 調整複選框的外觀,包括顏色、大小和樣式。

動態更新 - update_visibility函式可以擴充套件為根據複選框狀態包含其他操作或修改。

與小部件整合 - 將複選框與其他小部件(如按鈕或滑塊)結合使用,以實現全面的互動功能。

廣告