主頁(yè) > 知識(shí)庫(kù) > matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)

matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)

熱門(mén)標(biāo)簽:滴滴地圖標(biāo)注公司 如何申請(qǐng)400電話代理 杭州房產(chǎn)地圖標(biāo)注 智能電話機(jī)器人調(diào)研 天津塘沽區(qū)地圖標(biāo)注 地圖標(biāo)注可以遠(yuǎn)程操作嗎 400電話在線如何申請(qǐng) 甘肅高頻外呼系統(tǒng) 江門(mén)智能電話機(jī)器人

矩形選區(qū)概述

矩形選區(qū)是一種常見(jiàn)的對(duì)象選擇方式,這個(gè)名詞最常見(jiàn)于Photoshop中,用于在一個(gè)子圖選擇鼠標(biāo)拖動(dòng)的矩形區(qū)域中的元素,在matplotlib中的矩形選區(qū)屬于部件(widgets),matplotlib中的部件都是中性(neutral )的,即與具體后端實(shí)現(xiàn)無(wú)關(guān)。

矩形選區(qū)具體實(shí)現(xiàn)定義為matplotlib.widgets.RectangleSelector類(lèi),繼承關(guān)系為:Widget->AxesWidget->_SelectorWidget->RectangleSelector。

RectangleSelector類(lèi)的簽名為class matplotlib.widgets.RectangleSelector(ax, onselect, drawtype='box', minspanx=0, minspany=0, useblit=False, lineprops=None, rectprops=None, spancoords='data', button=None, maxdist=10, marker_props=None, interactive=False, state_modifier_keys=None)

RectangleSelector類(lèi)構(gòu)造函數(shù)的參數(shù)為:

  • ax:矩形選區(qū)生效的子圖,類(lèi)型為matplotlib.axes.Axes的實(shí)例。
  • onselect:矩形選區(qū)完成后執(zhí)行的回調(diào)函數(shù),函數(shù)簽名為def onselect(eclick: MouseEvent, erelease: MouseEvent),eclick和erelease分別為開(kāi)始和結(jié)束選區(qū)時(shí)的鼠標(biāo)事件。
  • drawtype:矩形選區(qū)的外觀,取值范圍為{"box", "line", "none"},"box"為矩形框,"line"為矩形選區(qū)對(duì)角線,"none"無(wú)外觀,類(lèi)型為字符串,默認(rèn)值為"box"。
  • lineprops:當(dāng)drawtype == "line"時(shí)線條的屬性,默認(rèn)值為dict(color="black", linestyle="-", linewidth=2, alpha=0.5)。
  • rectprops:當(dāng)drawtype == "box"時(shí)矩形框的屬性,默認(rèn)值為dict(facecolor="red", edgecolor="black", alpha=0.2, fill=True)。
  • button:設(shè)置可用于觸發(fā)矩形選區(qū)的鼠標(biāo)鍵,MouseButton列表,默認(rèn)為所有鼠標(biāo)鍵。
  • interactive:是否允許交互,布爾值,默認(rèn)為False,即選擇完成后選區(qū)即消失,值為T(mén)rue時(shí),選區(qū)選擇完成后不消失,除非按快捷鍵解除。
  • state_modifier_keys:快捷鍵設(shè)置,類(lèi)型為字典。
    • “move”: 移動(dòng)已存在的選區(qū),默認(rèn)沒(méi)有修飾鍵。
    • “clear”:清除現(xiàn)有選區(qū),默認(rèn)為 "escape",即esc鍵。
    • “square”:正方形選區(qū),默認(rèn)為"shift"。
    • “center”:以當(dāng)前點(diǎn)作為選區(qū)的中心點(diǎn),默認(rèn)為 "ctrl"。
    • “square” 和 “center” 可以組合使用。

案例

官方案例,https://matplotlib.org/gallery/widgets/rectangle_selector.html

案例說(shuō)明

拖動(dòng)鼠標(biāo)畫(huà)出矩形選區(qū),默認(rèn)為交互模式,顯示選區(qū)框,按esc鍵取消選區(qū),控制臺(tái)顯示選區(qū)的坐標(biāo)和使用的鼠標(biāo)鍵。按t鍵切換矩形選區(qū)功能的激活狀態(tài),非激活狀態(tài)矩形選區(qū)功能不生效。


控制臺(tái)輸出:

(0.74, -0.38) --> (8.90, 0.75)
 The buttons you used were: 1 1

代碼分析

from matplotlib.widgets import RectangleSelector
import numpy as np
import matplotlib.pyplot as plt

# 矩形選區(qū)選擇時(shí)的回調(diào)函數(shù)
def line_select_callback(eclick, erelease):
  """
  Callback for line selection.

  *eclick* and *erelease* are the press and release events.
  """
  x1, y1 = eclick.xdata, eclick.ydata
  x2, y2 = erelease.xdata, erelease.ydata
  print(f"({x1:3.2f}, {y1:3.2f}) --> ({x2:3.2f}, {y2:3.2f})")
  print(f" The buttons you used were: {eclick.button} {erelease.button}")

# 激活狀態(tài)快捷鍵回調(diào)函數(shù),active屬性和set_active方法繼承自_SelectorWidget類(lèi)
def toggle_selector(event):
  print(' Key pressed.')
  if event.key == 't':
    if RS.active:
      print(' RectangleSelector deactivated.')
      RS.set_active(False)
    else:
      print(' RectangleSelector activated.')
      RS.set_active(True)

# 繪圖
fig, ax = plt.subplots()
N = 100000 # If N is large one can see improvement by using blitting.
x = np.linspace(0, 10, N)

ax.plot(x, np.sin(2*np.pi*x)) # plot something
ax.set_title(
  "Click and drag to draw a rectangle.\n"
  "Press 't' to toggle the selector on and off.")

# 構(gòu)造矩形選區(qū)實(shí)例,選取外觀為矩形框,鼠標(biāo)鍵為左鍵右鍵有效,允許保留選區(qū)
# drawtype is 'box' or 'line' or 'none'
RS = RectangleSelector(ax, line_select_callback,
                    drawtype='box', useblit=True,
                    button=[1, 3], # disable middle button
                    minspanx=5, minspany=5,
                    spancoords='pixels',
                    interactive=True)
# 綁定鍵盤(pán)事件,實(shí)現(xiàn)切換矩形選區(qū)激活狀態(tài)功能
fig.canvas.mpl_connect('key_press_event', toggle_selector)
plt.show()

到此這篇關(guān)于matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)matplotlib 矩形選區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • matplotlib部件之套索Lasso的使用

標(biāo)簽:德宏 重慶 臨汾 漢中 廊坊 長(zhǎng)春 河池 東莞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)》,本文關(guān)鍵詞  matplotlib,部件,之,矩形,選區(qū),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章