matplotlib에서 플롯, 축 또는 그림을 사용하여 플롯을 그리는 것의 차이점은 무엇입니까?
저는 matplotlib, tbh에서 플롯을 그릴 때 백엔드에서 무슨 일이 일어나고 있는지 약간 혼란스럽습니다. 플롯, 축, 도형의 계층 구조에 대해 잘 모르겠습니다.문서를 읽어보니 도움이 되었지만 아직도 혼란스럽습니다...
아래 코드는 세 가지 다른 방법으로 동일한 그림을 그립니다.
#creating the arrays for testing
x = np.arange(1, 100)
y = np.sqrt(x)
#1st way
plt.plot(x, y)
#2nd way
ax = plt.subplot()
ax.plot(x, y)
#3rd way
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)
이제 제 질문은 - 입니다.
세 가지 방법 중 하나가 호출될 때 후드 아래에서 무엇이 진행됩니까?
어떤 방법을 사용할 때 어떤 방법을 사용해야 하며 어떤 장점과 단점이 있습니까?
객체의 이름
Matplotlib은 객체 지향적이며 주요 객체는 그림과 축입니다(이름 찾기).axes
약간 오해의 소지가 있지만, 아마도 나만 그럴 것입니다.)
그림은 캔버스로 생각할 수 있으며, 일반적으로 치수와 배경색 등을 지정할 수 있습니다.그림인 캔버스를 기본적으로 두 가지 방법으로 사용합니다. 다른 개체(대부분 축이지만 텍스트 레이블 등)를 배치하고 내용을 저장합니다.savefig
.
당신은 도끼를 일종의 스위스 군용 나이프, 도구를 제공하는 편리한 물건으로 생각할 수 있습니다..plot
,.scatter
,.hist
등) 모든 것에 대해, 대부분.여러 가지 방법 중 하나를 사용하여 그림 안에 하나, 둘, 여러 개의 축을 배치할 수 있습니다.
그plt
인터페이스
plt 프로시저 인터페이스는 원래 MATLAB™ 인터페이스를 모방하도록 개발되었지만 주요 객체(예: 그림 및 축)를 직접 참조하지 않더라도 객체 지향 인터페이스와 크게 다르지 않습니다. 이러한 객체는 자동으로 인스턴스화되며 각 pt 방법은 기본적으로 다음과 같습니다.기본적인 기본 객체의 방법 중 하나의 호출로 번역: 예: a.plt.plot()
이다.hidden_axes.plot
그리고 aplt.savefig
이다.hidden_figure.savefig
.
매 순간 다음을 사용하여 이러한 숨겨진 개체를 처리할 수 있습니다.plt.gcf
그리고.plt.gca
개체 메서드 중 하나가 plt 네임스페이스의 메서드로 포팅되지 않은 경우 이 작업이 필요할 수 있습니다.
저는 plt 네임스페이스에 다양한 방법으로 그림과 축을 인스턴스화할 수 있는 여러 가지 편리한 방법도 포함되어 있다는 것을 추가하고 싶습니다.
당신의 예들
1번길
plt.plot(x, y)
여기서는 plt 인터페이스만 사용하고 각 그림에서 단일 축만 사용할 수 있습니다. 하지만 이것은 데이터를 탐색할 때 원하는 것입니다. 작업을 완료하는 빠른 레시피입니다.
두 번째 길
ax = plt.subplot() ax.plot(x, y)
여기서는 plt 네임스페이스에서 편리한 방법을 사용하여 축 개체에 이름과 핸들을 지정하지만 숨겨진 숫자도 있습니다.나중에 Axes 객체를 사용하여 plot, 히스토그램 등의 작업을 수행할 수 있지만 모든 속성에 액세스하여 자유롭게 수정할 수도 있습니다.
제3의 길
figure = plt.figure() new_plot = figure.add_subplot(111) new_plot.plot(x, y)
여기서는 plt 네임스페이스에서 편리한 방법을 사용하여 그림을 인스턴스화하기 시작하고 나중에 개체 지향 인터페이스만 사용합니다.
plt 편의성 방식을 우회할 수 있습니다(matplotlib.figure.Figure
하지만 더 나은 대화형 경험을 위해 수치를 조정해야 합니다(결국 편리한 방법입니다).
개인적인
벌거벗기를 권합니다.plt.plot
,plt.scatter
대화형 세션의 맥락에서, 마법 명령과 함께 IPython을 사용할 가능성이 있으며, 또한 탐색적 주피터 노트북의 맥락에서도.
의 면에객지접근법, 몇고가지그향리.plt
한 방법은
- 세부적으로 조정된 하위 플롯의 맞춤형 배열로 모두를 위해 한 번씩 해결해야 하는 영구적인 문제가 있다면,
- 작성하는 프로그램의 UI에 Matplotlib을 포함하려면 다음과 같이 하십시오.
이 양극단 사이에는 커다란 회색 영역이 있습니다. 그리고 만약 당신이 저에게 무엇을 해야 하는지 묻는다면 저는 그저 "그것은 의존적입니다."라고 말할 것입니다.
의 plt
네임스페이스는 정말 편리합니다!특히 그림과 축을 사용하여 인스턴스화하면 대화형 창을 처리하는 데 필요한 모든 세부 정보가 자동으로 고려됩니다.
방법 1
plt.plot(x, y)
이렇게 하면 (x,y) 좌표를 사용하여 하나의 그림만 그릴 수 있습니다.그래픽을 하나만 얻고 싶다면 이렇게 사용할 수 있습니다.
방법 2
ax = plt.subplot()
ax.plot(x, y)
이렇게 하면 한 창에 하나 또는 여러 개의 그림을 그릴 수 있습니다.그림을 쓸 때는 그림 하나만 그릴 수 있지만 다음과 같은 것을 만들 수 있습니다.
fig1, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
각각 ax1, ax2, ax3, ax4로 명명된 4개의 그림을 같은 창에 표시합니다.이 창은 제 예시와 함께 4개의 부분으로 나누어져 있습니다.
방법 3
fig = plt.figure()
new_plot = fig.add_subplot(111)
new_plot.plot(x, y)
저는 사용하지 않았지만, 당신은 문서를 찾을 수 있습니다.
예:
import numpy as np
import matplotlib.pyplot as plt
# Method 1 #
x = np.random.rand(10)
y = np.random.rand(10)
figure1 = plt.plot(x,y)
# Method 2 #
x1 = np.random.rand(10)
x2 = np.random.rand(10)
x3 = np.random.rand(10)
x4 = np.random.rand(10)
y1 = np.random.rand(10)
y2 = np.random.rand(10)
y3 = np.random.rand(10)
y4 = np.random.rand(10)
figure2, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
ax1.plot(x1,y1)
ax2.plot(x2,y2)
ax3.plot(x3,y3)
ax4.plot(x4,y4)
plt.show()
다른 예:
언급URL : https://stackoverflow.com/questions/37970424/what-is-the-difference-between-drawing-plots-using-plot-axes-or-figure-in-matpl
'programing' 카테고리의 다른 글
이클립스/CDT로 사용자 지정 파일 만들기 사용 (0) | 2023.06.15 |
---|---|
MariaDB: [.character.]이(가) 있는 REGEX가 더 이상 작동하지 않습니다('POSIX 비교 요소는 지원되지 않음). (0) | 2023.06.15 |
파이썬에서 문자열 크기를 구하는 방법은 무엇입니까? (0) | 2023.06.15 |
CSS Flexbox에서 "justify-items" 및 "justify-self" 속성이 없는 이유는 무엇입니까? (0) | 2023.06.15 |
iOS에 대한 이벤트 처리 - 테스트:withEvent:와 pointInside:withEvent:는 관련이 있습니까? (0) | 2023.06.15 |