matplotlib에서pyplot와 대상을 대상으로 하는 두 가지 그림 모드 간의 관계를 상세히 설명합니다

matplotlib에는 두 가지 그림 그리기 방식이 있는데, 하나는 matplotlib에 의존하는 것이다.pyplot 모듈은 matlab 그림 그리기 명령과 유사한 그림 그리기 방식을 실현한다. 하나는 대상을 대상으로 하는 그림이고 Figure Canvas(화포), Figure(이미지), Axes(축역) 등 대상 그림에 의존한다.
이 두 가지 방식 사이에는 완전히 독립된 것이 아니라 특정한 메커니즘을 통해 연결된pylot 그림 그리기 모드는 사실 은밀하게 대상 모드에 대한 관련 대상을 만들었는데 그 중의 관건은 matplotlib._pylab_helpers 모듈의 단일 클래스 Gcf는 현재 활동하는 화포와 이미지를 추적하는 역할을 합니다.
따라서 matplotlib 드로잉의 기초는 대상식 드로잉이고pylot 드로잉 모델은 간편한 드로잉 방식이라고 할 수 있다.
먼저 원본 코드를 분석하지 않고 먼저 실험을 하자!

실험


먼저 실험을 통해 우리가 자주 사용하는pyplot 그림 그리기 모드를 한 번 봅시다
실험1
드로잉 창 표시 없음

from matplotlib import pyplot as plt
plt.show()

실험2
드로잉 결과 표시

from matplotlib import pyplot as plt
plt.plot([1,2])
plt.show()
실험3
드로잉 결과 표시

from matplotlib import pyplot as plt
plt.gca()
plt.show()

실험
드로잉 결과 표시

from matplotlib import pyplot as plt
plt.figure()
#  plt.gcf()
plt.show()

pyplot 모듈 그래픽 원리


pyplot 모듈figure () 함수, gcf () 함수, gca () 함수,plot () 함수와 다른 그림 함수의 원본을 보면 간단하게 사고방식을 정리할 수 있습니다!
  • figure () 함수: 기존 이미지가 있으면 현재 이미지로 되돌려주고, 기존 이미지가 없으면 새 이미지를 초기화합니다. 되돌려주는 값은 Figure 대상입니다..
  • gcf() 함수: 기존 이미지가 있으면 현재 이미지이고, 기존 이미지가 없으면figure() 함수를 호출합니다. 반환 값은Figure 대상입니다
  • gca() 함수: gcf() 함수를 호출하여 대상을 되돌리는 gca 방법, 되돌림 값은 Axes 대상..
  • plot() 함수: gca() 함수를 호출하여 대상을 되돌려주는plot 방법..
  • pyplot 모듈 기타 그림 함수: 모두 gca() 함수를 호출하는 방법..
  • 따라서 pyplot 드로잉 모드는plot() 함수나 다른 드로잉 함수를 사용하고 기존 이미지 대상이 없으면 이미지 대상을 먼저 생성합니다.
    물론figure () 함수, gcf () 함수와 gca () 함수를 사용하며, 기존 이미지 대상이 없으면 이미지 대상을 먼저 만듭니다.
    더 나아가, matplotlib에서.pyplot 모듈 원본 코드에 다음과 같은 코드가 나타났기 때문에 matplotlib._pylab_helpers 모듈의 역할은 현재 활동하는 화포와 이미지를 추적하는 것이다
    
    figManager = _pylab_helpers.Gcf.get_fig_manager(num)
    figManager = _pylab_helpers.Gcf.get_active()
    
    
    matplotlib._pylab_helpers 모듈의 역할은pyplot 그림 모드의 이미지를 관리하는 것입니다.이 모듈은 단지 하나의 종류인 Gcf만 있는데, 그 역할은 현재 활동하고 있는 화포와 이미지를 추적하는 것이다.

    matplotlib.pyplot 모듈 부분 원본

    
    def figure(num=None, # autoincrement if None, else integer from 1-N
          figsize=None, # defaults to rc figure.figsize
          dpi=None, # defaults to rc figure.dpi
          facecolor=None, # defaults to rc figure.facecolor
          edgecolor=None, # defaults to rc figure.edgecolor
          frameon=True,
          FigureClass=Figure,
          clear=False,
          **kwargs
          ):
    
      figManager = _pylab_helpers.Gcf.get_fig_manager(num)
      if figManager is None:
        max_open_warning = rcParams['figure.max_open_warning']
    
        if len(allnums) == max_open_warning >= 1:
          cbook._warn_external(
            "More than %d figures have been opened. Figures "
            "created through the pyplot interface "
            "(`matplotlib.pyplot.figure`) are retained until "
            "explicitly closed and may consume too much memory. "
            "(To control this warning, see the rcParam "
            "`figure.max_open_warning`)." %
            max_open_warning, RuntimeWarning)
    
        if get_backend().lower() == 'ps':
          dpi = 72
    
        figManager = new_figure_manager(num, figsize=figsize,
                        dpi=dpi,
                        facecolor=facecolor,
                        edgecolor=edgecolor,
                        frameon=frameon,
                        FigureClass=FigureClass,
                        **kwargs)
      return figManager.canvas.figure
    
    def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
      return gca().plot(
        *args, scalex=scalex, scaley=scaley,
        **({"data": data} if data is not None else {}), **kwargs)
    
    def gcf():
      """
      Get the current figure.
    
      If no current figure exists, a new one is created using
      `~.pyplot.figure()`.
      """
      figManager = _pylab_helpers.Gcf.get_active()
      if figManager is not None:
        return figManager.canvas.figure
      else:
        return figure()
    
    def gca(**kwargs):
      return gcf().gca(**kwargs)
    
    def get_current_fig_manager():
      """
      Return the figure manager of the current figure.
    
      The figure manager is a container for the actual backend-depended window
      that displays the figure on screen.
    
      If if no current figure exists, a new one is created an its figure
      manager is returned.
    
      Returns
      -------
      `.FigureManagerBase` or backend-dependent subclass thereof
      """
      return gcf().canvas.manager

    Gcf 클래스 소스

    
    class Gcf:
      """
      Singleton to maintain the relation between figures and their managers, and
      keep track of and "active" figure and manager.
    
      The canvas of a figure created through pyplot is associated with a figure
      manager, which handles the interaction between the figure and the backend.
      pyplot keeps track of figure managers using an identifier, the "figure
      number" or "manager number" (which can actually be any hashable value);
      this number is available as the :attr:`number` attribute of the manager.
    
      This class is never instantiated; it consists of an `OrderedDict` mapping
      figure/manager numbers to managers, and a set of class methods that
      manipulate this `OrderedDict`.
    
      Attributes
      ----------
      figs : OrderedDict
        `OrderedDict` mapping numbers to managers; the active manager is at the
        end.
      """
    
    matplotlib 중pyplot와 대상을 대상으로 하는 두 가지 그림 모드 간의 관계를 상세히 설명하는 이 글은 여기에 소개되었습니다. 더 많은 matplotlib 중pyplot와 대상을 대상으로 하는 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기