programing

많은 예에서 Matplotlib/pyplot/python에 '그림, ax = plt.subplots()'를 사용하는 이유는 무엇입니까?

projobs 2022. 10. 21. 21:59
반응형

많은 예에서 Matplotlib/pyplot/python에 '그림, ax = plt.subplots()'를 사용하는 이유는 무엇입니까?

나는 사용법을 배우고 있다.matplotlib예시를 연구함으로써, 그리고 많은 예들이 하나의 플롯을 만들기 전에 다음과 같은 선을 포함하는 것처럼 보인다.

fig, ax = plt.subplots()

여기 몇 가지 예가 있습니다.

이 함수는 하나의 차트만 작성하려고 해도 많이 사용되고 있습니다.다른 장점이 있나요?의 공식 데모subplots()또한 사용f, ax = subplots하나의 차트를 생성할 때, 그 이후에는 도끼만 참조됩니다.이게 그들이 사용하는 코드입니다.

# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

plt.subplots()는 그림 및 축 객체를 포함하는 태플을 반환하는 함수입니다.따라서 사용할 때fig, ax = plt.subplots()당신은 이 태플을 변수들에 풀어놓습니다.fig그리고.ax.하고 있다fig는 그림 수준의 속성을 변경하거나 나중에 그림 파일을 이미지 파일로 저장하는 경우(예: 를 사용하여).fig.savefig('yourfilename.png')반환된 피규어 오브젝트를 사용할 필요는 없습니다만, 나중에 사용하는 사람이 많기 때문에 자주 볼 수 있습니다.또한 모든 축 객체(그림 방법을 가진 객체)에는 상위 그림 객체가 있으므로 다음과 같습니다.

fig, ax = plt.subplots()

보다 간결합니다.

fig = plt.figure()
ax = fig.add_subplot(111)

여기 보충 자료입니다.

다음 질문은 그림에 서브플롯을 추가할 경우 어떻게 해야 합니까?

이 문서에서 설명한 바와 같이fig = plt.subplots(nrows=2, ncols=2)하나의 그림 객체에 그리드(2,2)가 있는 하위 플롯 그룹을 설정합니다.

그럼 아시다시피fig, ax = plt.subplots()태플을 반환한다.해 보자fig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)일단은.

ValueError: not enough values to unpack (expected 4, got 2)

오류가 발생하지만 걱정하지 마십시오.plt.subplots()는 실제로 2개의 요소가 있는 태플을 반환합니다.첫 번째 개체는 그림 개체이고 다른 개체는 하위 플롯 개체 그룹이어야 합니다.

다시 한 번 해보겠습니다.

fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2)

타입을 확인합니다.

type(fig) #<class 'matplotlib.figure.Figure'>
type(ax1) #<class 'matplotlib.axes._subplots.AxesSubplot'>

물론 매개 변수를 (nrows=1, ncols=4)로 사용하는 경우 형식은 다음과 같아야 합니다.

fig, [ax1, ax2, ax3, ax4] = plt.subplots(nrows=1, ncols=4)

따라서 목록의 구성은 그림에서 설정한 서브플롯 그리드와 동일하게 유지해야 합니다.

이것이 당신에게 도움이 되기를 바랍니다.

질문과 위의 답변에 대한 보충으로, 또한 중요한 차이가 있습니다.plt.subplots()그리고.plt.subplot()없어진 것에 주의해 주세요.'s'마지막에.

사용할 수 있다plt.subplots()모든 하위 플롯을 한 번에 만들면 하위 플롯의 그림 및 축(축 방향)이 튜플로 반환됩니다.그림은 스케치를 그리는 캔버스로 이해할 수 있습니다.

# create a subplot with 2 rows and 1 columns
fig, ax = plt.subplots(2,1)

,는 할 수 .plt.subplot()서브플롯을 개별적으로 추가하는 경우.한 하위구의 축만 반환합니다.

fig = plt.figure() # create the canvas for plotting
ax1 = plt.subplot(2,1,1) 
# (2,1,1) indicates total number of rows, columns, and figure number respectively
ax2 = plt.subplot(2,1,2)

★★★★★★★★★★★★★★.plt.subplots()에서는, 할 수 있는 에, 를 합니다.

# for example, sharing x-axis, y-axis for all subplots can be specified at once
fig, ax = plt.subplots(2,2, sharex=True, sharey=True)

공유축 반면, 와 함께plt.subplot()번거로워질 수 있는 축마다 개별적으로 지정해야 합니다.

에, 여러분은 하실 수 있습니다.type(plt.subplots()) 「은 반환됩니다.type(plt.subplot())matplotlib.axes._subplots.AxesSubplot포장을 풀 수 없는 거죠

「」를 사용합니다.plt.subplots()는 Axes 객체를 제공하고 Axes 인터페이스를 사용하여 플롯을 정의할 수 있기 때문에 널리 사용됩니다.

방법으로는 인 'Da'를 .plt.plot 기능 etc 능: :

import matplotlib.pyplot as plt

# global state version - modifies "current" figure
plt.plot(...)
plt.xlabel(...)

# axes version - modifies explicit axes
ax.plot(...)
ax.set_xlabel(...)

그럼 왜 축을 선호하지?

  • 리팩터블 - 글로벌 상태에 의존하지 않고 Axes 개체를 사용하는 함수에 코드 중 일부를 저장할 수 있습니다.
  • 여러 개의 서브플롯이 있는 상황으로 쉽게 이행할 수 있습니다.
  • 2개의 인터페이스를 전환하는 것이 아니라 1개의 일관성 있는 익숙한 인터페이스
  • matplotlib의 모든 피쳐 깊이에 액세스할 수 있는 유일한 방법

글로벌 상태 버전은 대화식으로 사용하기 쉽고 Matlab 사용자에게 친숙한 인터페이스가 되도록 작성되었지만, 대형 프로그램 및 스크립트에서는 Axis 인터페이스를 사용하는 것이 좋습니다.

이 토픽에 대해 자세히 알아보고 있는 matplotlib 블로그 게시물이 있습니다: 주구 대 객체 지향 Interface

양쪽 세계를 상대하는 것은 비교적 쉽다., 은 항상 할 수 .ax = plt.gca()("")

언급URL : https://stackoverflow.com/questions/34162443/why-do-many-examples-use-fig-ax-plt-subplots-in-matplotlib-pyplot-python

반응형