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,rectpps=None,spancoords='data',button=None,maxist=10,markerprops=None, interactive=False, state_modifier_keys=None)
RectangleSelector 클래스 구조 함수 의 매개 변 수 는:
  • x:사각형 선택 영역 에 적용 되 는 하위 그림 입 니 다.형식 은 matplotlib.axes.Axes 의 인 스 턴 스 입 니 다
  • onselect:사각형 선택 이 완 료 된 후에 실 행 된 리 셋 함수,함수 서명 은 def onselect(eclick:Mouse Event,erelease:Mouse Event)이 고 eclick 과 erelease 는 각각 선택 영역 을 시작 하고 끝 낼 때의 마우스 이벤트 입 니 다
  • drawtype:직사각형 선택 구역 의 외관,수치 범 위 는{"box","line","none"},"box"는 직사각형 상자,"line"은 직사각형 선택 구역 대각선,"none"은 외관 이 없고 형식 은 문자열 이 며 기본 값 은"box"입 니 다
  • lineprops:drawtype=="line"시 선의 속성,기본 값 은 dict(color="black",linestyle="-",linewidth=2,alpha=0.5)입 니 다
  • rectpps:drawtype=="box"시 사각형 상자 의 속성,기본 값 은 dict(facecolor="red",edgecolor="black",alpha=0.2,fill=True)입 니 다
  • button:사각형 선택 영역 을 터치 할 수 있 는 마우스 키 를 설정 합 니 다.Mouse Button 목록 은 기본적으로 모든 마우스 키 입 니 다
  • inteactive:대화,불 값 을 허용 하 는 지,기본 값 은 False 입 니 다.즉,선택 이 완 료 된 후에 선택 영역 이 사라 지고 값 이 True 일 때 선택 영역 이 완 료 된 후에 사라 지지 않 습 니 다.단축 키 를 누 르 면 해제 되 지 않 습 니 다
  • state_modifier_keys:단축 키 설정,형식 은 사전 입 니 다.
  • "move":존재 하 는 선택 영역 을 이동 합 니 다.기본적으로 수식 키 가 없습니다
  • "clear":기 존 선택 영역 을 삭제 합 니 다.기본 값 은"escape",즉 esc 키 입 니 다
  • 4.567917."square":정사각형 선택 구역,기본 값 은"shift"입 니 다4.567917."center":현재 점 을 선택 지역 의 중심 점 으로 하고 기본 값 은"ctrl"입 니 다"square"와"center"를 조합 하여 사용 할 수 있 습 니 다케이스
    공식 사례
    사례 설명
    마 우 스 를 드래그 하여 직사각형 선택 영역 을 그립 니 다.기본 값 은 대화 모드 입 니 다.선택 영역 상 자 를 표시 하고 esc 키 를 누 르 면 선택 영역 을 취소 합 니 다.콘 솔 은 선택 영역의 좌표 와 사용 하 는 마우스 키 를 표시 합 니 다.t 키 를 누 르 면 사각형 선택 기능 의 활성화 상 태 를 전환 합 니 다.비 활성화 상태 사각형 선택 기능 은 유효 하지 않 습 니 다.

    콘 솔 출력:
    (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.
    " "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)의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 matplotlib 사각형 선택 영역 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기