中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

matplotlib部件之矩形選區(RectangleSelector)的實現方法

發布時間:2021-02-02 09:49:10 來源:億速云 閱讀:317 作者:小新 欄目:開發技術

小編給大家分享一下matplotlib部件之矩形選區(RectangleSelector)的實現方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

矩形選區概述

矩形選區是一種常見的對象選擇方式,這個名詞最常見于Photoshop中,用于在一個子圖選擇鼠標拖動的矩形區域中的元素,在matplotlib中的矩形選區屬于部件(widgets),matplotlib中的部件都是中性(neutral )的,即與具體后端實現無關。

矩形選區具體實現定義為matplotlib.widgets.RectangleSelector類,繼承關系為:Widget->AxesWidget->_SelectorWidget->RectangleSelector。

RectangleSelector類的簽名為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類構造函數的參數為:

  • ax:矩形選區生效的子圖,類型為matplotlib.axes.Axes的實例。

  • onselect:矩形選區完成后執行的回調函數,函數簽名為def onselect(eclick: MouseEvent, erelease: MouseEvent),eclick和erelease分別為開始和結束選區時的鼠標事件。

  • drawtype:矩形選區的外觀,取值范圍為{"box", "line", "none"},"box"為矩形框,"line"為矩形選區對角線,"none"無外觀,類型為字符串,默認值為"box"。

  • lineprops:當drawtype == "line"時線條的屬性,默認值為dict(color="black", line, linewidth=2, alpha=0.5)。

  • rectprops:當drawtype == "box"時矩形框的屬性,默認值為dict(facecolor="red", edgecolor="black", alpha=0.2, fill=True)。

  • button:設置可用于觸發矩形選區的鼠標鍵,MouseButton列表,默認為所有鼠標鍵。

  • interactive:是否允許交互,布爾值,默認為False,即選擇完成后選區即消失,值為True時,選區選擇完成后不消失,除非按快捷鍵解除。

  • state_modifier_keys:快捷鍵設置,類型為字典。

    • “move”: 移動已存在的選區,默認沒有修飾鍵。

    • “clear”:清除現有選區,默認為 "escape",即esc鍵。

    • “square”:正方形選區,默認為"shift"。

    • “center”:以當前點作為選區的中心點,默認為 "ctrl"。

    • “square” 和 “center” 可以組合使用。

案例

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

案例說明

拖動鼠標畫出矩形選區,默認為交互模式,顯示選區框,按esc鍵取消選區,控制臺顯示選區的坐標和使用的鼠標鍵。按t鍵切換矩形選區功能的激活狀態,非激活狀態矩形選區功能不生效。

matplotlib部件之矩形選區(RectangleSelector)的實現方法

控制臺輸出:

(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

# 矩形選區選擇時的回調函數
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}")

# 激活狀態快捷鍵回調函數,active屬性和set_active方法繼承自_SelectorWidget類
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.")

# 構造矩形選區實例,選取外觀為矩形框,鼠標鍵為左鍵右鍵有效,允許保留選區
# 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)
# 綁定鍵盤事件,實現切換矩形選區激活狀態功能
fig.canvas.mpl_connect('key_press_event', toggle_selector)
plt.show()

看完了這篇文章,相信你對“matplotlib部件之矩形選區(RectangleSelector)的實現方法”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安义县| 湖口县| 扶沟县| 宝山区| 石屏县| 六盘水市| 托克逊县| 高要市| 南漳县| 南陵县| 望奎县| 丹凤县| 灌阳县| 盐山县| 禄劝| 泰安市| 额敏县| 井研县| 阜平县| 汉寿县| 乌兰县| 十堰市| 阳山县| 股票| 瑞金市| 江门市| 芦山县| 本溪| 高雄县| 五常市| 萝北县| 博客| 阿克苏市| 平南县| 老河口市| 依兰县| 财经| 新龙县| 新巴尔虎右旗| 阿鲁科尔沁旗| 肇州县|