matplotlib에서pyplot와 대상을 대상으로 하는 두 가지 그림 모드 간의 관계를 상세히 설명합니다
6078 단어 matplotlibpyplot대상을 향하다
이 두 가지 방식 사이에는 완전히 독립된 것이 아니라 특정한 메커니즘을 통해 연결된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 () 함수, 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와 대상을 대상으로 하는 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
「수리계획법~선형계획법~」을 참고로 matplotlib와 WolframAlpha로 해보고 싶다.(오리지널 포스트) (참고) 선형 계획법 초입문 작업 중입니다. 정수에만 대응합니다. 공부중. 쉽게 3D 표시할 수 있습니까? 조언을 받으면 도움이됩니다. 완성형?을 찾고 있습니다. 잘 부탁드립니다. 정수해: {{x...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.