matplotlib 대화 형 데이터 커서 mpldatacursor 구현

간단 한 소개mpldatacursor 패 키 지 는 matplotlib 에 대화 형 데이터 커서(팝 업 주석 상자)를 제공 할 수 있 습 니 다.
그것 의 전형 적 인 기능 은:
  • 도표 데이터 요 소 를 표시 할 때 텍스트 상자 에 최근 데이터 요소 의 좌표 값 을 표시 합 니 다.
  • 텍스트 상자 에서 데이터 커서 를 표시 하지 않 습 니 다.
  • d 키 를 눌 렀 을 때 디 스 플레이 를 전환 합 니 다.\데이터 커서 를 닫 습 니 다.
  • 在这里插入图片描述  
    설치 하 다.
    matplotlib 버 전이 3.3 보다 낮 으 면 pip 로 직접 설치 할 수 있 습 니 다.
    
    pip install mpldatacursor
    matplotlib 버 전이 3.3 보다 높 으 면 pip 설치 에 성 공 했 지만 실행 사례 에 AttributeError: 'ScalarFormatter' object has no attribute 'pprint_val' 오류 가 발생 할 수 있 습 니 다.
    원본 코드 를 보면 알 수 있 습 니 다:
    
    try:
      # Again, older versions of mpl
      return formatter.pprint_val(x)
    except AttributeError:
      # 3.3.0 or later
      return formatter.format_data_short(x)
    
    분석 을 통 해 국내 pip 소스 를 사 용 했 기 때문에 mpldatacursor 패키지 가 아직 복구 되 지 않 았 기 때 문 으로 예상 된다(pip 에 설 치 된 mpldatacursor 패키지 버 전 번 호 는 0.7.1).
    따라서 https://github.com/joferkington/mpldatacursor 까지 건의 합 니 다.
    원본 코드 를 다운로드 하여 원본 코드 를 설치 합 니 다(원본 코드 가 설 치 된 mpldatacursor 패키지 버 전 번 호 는 0.7.dev0).
    
    python setup.py install
    기본 응용(공식 인 스 턴 스)분석
    응용 프로 세 스mpldatacursor 패키지 의 기본 응용 방식 은 비교적 간단 하 다.
  • mpldatacursor 가방 에서 datacursor 함 수 를 가 져 옵 니 다.
  • 응용 datacursor 함수.
  •  패키지 구조
    원본 코드 를 보면 알 수 있 듯 이 mpldatacursor 가방 의 구 조 는 다음 과 같다.
    
    mpldatacursor
       convenience.py
       datacursor.py
       pick_info.py
       __init__.py
    datacursor 함수 정 의 는 convenience.py 에서 datacursor 함수 의 반환 값 은 DataCursor 류 인 스 턴 스 입 니 다.DataCursor 류 의 정 의 는 datacursor.py 에 있다.pick_info.py 은 팝 업 텍스트 상자 와 관련 된 일련의 함 수 를 정의 하여 DataCursor 가지 호출 을 제공 합 니 다.
    datacursor 함수 정의datacursor 함수 정의 에서 알 수 있 듯 이:
  • datacursor 함 수 는 파 라 메 터 를 제공 하지 않 을 수 있 습 니 다.그러면 이미지 안의 모든 데이터 요 소 는 상호작용 데이터 커서 를 사용 합 니 다.
  • datacursor 함 수 는 어떤 데이터 요소 가 상호작용 데이터 커서 를 응용 하 는 지 지정 할 수 있 습 니 다.
  • 
    def datacursor(artists=None, axes=None, **kwargs):
      """
      Create an interactive data cursor for the specified artists or specified
      axes. The data cursor displays information about a selected artist in a
      "popup" annotation box.
    
      If a specific sequence of artists is given, only the specified artists will
      be interactively selectable. Otherwise, all manually-plotted artists in
      *axes* will be used (*axes* defaults to all axes in all figures).
    
      Parameters
      -----------
      artists : a matplotlib artist or sequence of artists, optional
        The artists to make selectable and display information for. If this is
        not specified, then all manually plotted artists in `axes` will be
        used.
      axes : a matplotlib axes of sequence of axes, optional
        The axes to selected artists from if a sequence of artists is not
        specified. If `axes` is not specified, then all available axes in all
        figures will be used.
      tolerance : number, optional
        The radius (in points) that the mouse click must be within to select
        the artist. Default: 5 points.
      formatter : callable, optional
        A function that accepts arbitrary kwargs and returns a string that will
        be displayed with annotate. Often, it is convienent to pass in the
        format method of a template string, e.g.
        ``formatter="{label}".format``.
        Keyword arguments passed in to the `formatter` function:
          `x`, `y` : floats
            The x and y data coordinates of the clicked point
          `event` : a matplotlib ``PickEvent``
            The pick event that was fired (note that the selected
            artist can be accessed through ``event.artist``).
          `label` : string or None
            The legend label of the selected artist.
          `ind` : list of ints or None
            If the artist has "subitems" (e.g. points in a scatter or
            line plot), this will be a list of the item(s) that were
            clicked on. If the artist does not have "subitems", this
            will be None. Note that this is always a list, even when
            a single item is selected.
        Some selected artists may supply additional keyword arguments that
        are not always present, for example:
          `z` : number
            The "z" (usually color or array) value, if present. For an
            ``AxesImage`` (as created by ``imshow``), this will be the
            uninterpolated array value at the point clicked. For a
            ``PathCollection`` (as created by ``scatter``) this will be the
            "c" value if an array was passed to "c".
          `i`, `j` : ints
            The row, column indicies of the selected point for an
            ``AxesImage`` (as created by ``imshow``)
          `s` : number
            The size of the selected item in a ``PathCollection`` if a size
            array is specified.
          `c` : number
            The array value displayed as color for a ``PathCollection``
            if a "c" array is specified (identical to "z").
          `point_label` : list
            If `point_labels` is given when the data cursor is initialized
            and the artist has "subitems", this will be a list of the items
            of `point_labels` that correspond to the selected artists.
            Note that this is always a list, even when a single artist is
            selected.
          `width`, `height`, `top`, `bottom` : numbers
            The parameters for ``Rectangle`` artists (e.g. bar plots).
      point_labels : sequence or dict, optional
        For artists with "subitems" (e.g. Line2D's), the item(s) of
        `point_labels` corresponding to the selected "subitems" of the artist
        will be passed into the formatter function as the "point_label" kwarg.
        If a single sequence is given, it will be used for all artists with
        "subitems". Alternatively, a dict of artist:sequence pairs may be given
        to match an artist to the correct series of point labels.
      display : {"one-per-axes", "single", "multiple"}, optional
        Controls whether more than one annotation box will be shown.
        Default: "one-per-axes"
      draggable : boolean, optional
        Controls whether or not the annotation box will be interactively
        draggable to a new location after being displayed. Defaults to False.
      hover : boolean, optional
        If True, the datacursor will "pop up" when the mouse hovers over an
        artist. Defaults to False. Enabling hover also sets
        `display="single"` and `draggable=False`.
      props_override : function, optional
        If specified, this function customizes the parameters passed into the
        formatter function and the x, y location that the datacursor "pop up"
        "points" to. This is often useful to make the annotation "point" to a
        specific side or corner of an artist, regardless of the position
        clicked. The function is passed the same kwargs as the `formatter`
        function and is expected to return a dict with at least the keys "x"
        and "y" (and probably several others).
        Expected call signature: `props_dict = props_override(**kwargs)`
      keybindings : boolean or dict, optional
        By default, the keys "d" and "t" will be bound to deleting/hiding all
        annotation boxes and toggling interactivity for datacursors,
        respectively. If keybindings is False, the ability to hide/toggle
        datacursors interactively will be disabled. Alternatively, a dict of
        the form {'hide':'somekey', 'toggle':'somekey'} may specified to
        customize the keyboard shortcuts.
      date_format : string, optional
        The strftime-style formatting string for dates. Used only if the x or y
        axes have been set to display dates. Defaults to "%x %X".
      display_button: int, optional
        The mouse button that will triggers displaying an annotation box.
        Defaults to 1, for left-clicking. (Common options are 1:left-click,
        2:middle-click, 3:right-click)
      hide_button: int or None, optional
        The mouse button that triggers hiding the selected annotation box.
        Defaults to 3, for right-clicking. (Common options are 1:left-click,
        2:middle-click, 3:right-click, None:hiding disabled)
      keep_inside : boolean, optional
        Whether or not to adjust the x,y offset to keep the text box inside the
        figure. This option has no effect on draggable datacursors. Defaults to
        True. Note: Currently disabled on OSX and NbAgg/notebook backends.
      **kwargs : additional keyword arguments, optional
        Additional keyword arguments are passed on to annotate.
    
      Returns
      -------
      dc : A ``mpldatacursor.DataCursor`` instance
      """
    
    공식 인 스 턴 스 소스 코드
    
    import matplotlib.pyplot as plt
    import numpy as np
    from mpldatacursor import datacursor
    
    data = np.outer(range(10), range(1, 5))
    
    fig, ax = plt.subplots()
    lines = ax.plot(data)
    ax.set_title('Click somewhere on a line')
    
    datacursor()
    
    plt.show()
    
    특정한 데이터 요소 만 대화 식 커서 를 사용 하도록 제한 합 니 다.
    이 실례 에서 두 개의 데이터 요소(artist)가 있다.line1line2,datacursor(line1) 함수 가 파라미터 line1 을 제 공 했 기 때문에 line1 만 상호작용 데이터 커서 를 사용 할 수 있 고 line2 은 효과 가 없다.
    
    import matplotlib.pyplot as plt
    import numpy as np
    from mpldatacursor import datacursor
    fig, ax = plt.subplots()
    line1 = ax.plot([1,3])
    line2 = ax.plot([1,2])
    ax.set_title('Click somewhere on a line')
    datacursor(line1)
    plt.show()
    
    在这里插入图片描述
    기타 공식 실례 기능 개술mpldatacursor 은 대량의 실제 사례 를 제 공 했 는데 상세 한 것 은 https://github.com/joferkington/mpldatacursor/tree/master/examples 을 보십시오.일일이 분석 하지 않 고 기능 만 간단하게 설명 한다.
  • basic_single_annotation.py:다 중 서브 맵 의 경우 모든 서브 맵 의 데이터 커서 는 독립 적 입 니 다.즉,모든 서브 맵 은 데이터 커서 를 표시 할 수 있 고 서로 영향 을 주지 않 습 니 다.datacursor(display='single') 인 자 를 사용 한 후 현재 하위 그림 에 만 데이터 커서 를 표시 하고 나머지 하위 그림 에 표 시 된 데이터 커서 는 자동 으로 닫 힙 니 다.
  • change_popup_color.py:두 가지 사례 를 제공 합 니 다.하 나 는 제시 상자 의 테 두 리 를 취소 하고 하 나 는 제시 상자 의 배경 색 을 흰색 으로 바 꿉 니 다.
  • hover_example.py:데이터 커서 의 트리거 방식 을 마우스 왼쪽 단 추 를 누 르 면 마우스 부상 으로 변경 합 니 다.
  • show_artist_labels.py:데이터 커서 의 기본 좌표 값 을 데이터 요소 의 label 으로 변경 합 니 다.
  • highlighting_example.py:데이터 요 소 를 클릭 하면 데이터 요소 가 밝 아 집 니 다(노란색).
  • draggable_example.py:하나의 서브 맵 에서 여러 개의 데이터 커서 를 동시에 표시 합 니 다.
  • customize_keyboard_shortcuts.py:데이터 커서 단축 키 를 다시 연결 합 니 다.
  • labeled_points_example.py:사용자 정의 데이터 점 라벨.
  • date_example.py:날짜 데이터 에 따 르 면.
  • bar_example.py:막대 그래프 에서 모든 기둥 위 에 마우스 로 떠 서 데이터 커서 를 터치 합 니 다.
  • 총결산mpldatacursor 은 역사가 유구 하지만 matplotlib3.3 을 지원 하 는 안정 판 을 발표 하지 않 았 고 소스 코드 에 개발 판 을 설치 하거나 mplcursors 가방 https://github.com/anntzer/mplcursors 을 사용 하 는 것 을 권장 합 니 다.mpldatacursor 의 기능 이 매우 풍부 하여 matplotlib 의 상호작용 을 깊이 있 게 학습 하 는 사례 로 삼 을 수 있다.
    matplotlib 인 터 랙 티 브 데이터 커서 mpldatacursor 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 matplotlib 인 터 랙 티 브 데이터 커서 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기