나는 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()
은 figure 및 axes 객체를 포함하는 튜플을 반환하는 함수입니다. 따라서 사용하는 경우 fig, ax = plt.subplots()
이 변수에이 튜플을 풀고 fig
하고 ax
. 갖는 것은 fig
당신이 이미지 파일로 그림 이상 (예와 변화를 그림 수준의 속성 또는 저장하려는 경우에 유용합니다 fig.savefig('yourfilename.png')
). 확실히 반환 된 그림 객체를 사용할 필요는 없지만 많은 사람들이 나중에 그것을 사용하므로 일반적입니다. 또한 모든 좌표축 객체 (플로팅 방법이있는 객체)에는 어쨌든 부모 도형 객체가 있습니다.
fig, ax = plt.subplots()
이보다 더 간결합니다.
fig = plt.figure()
ax = fig.add_subplot(111)
답변
여기에 보충제.
다음 질문은 그림에서 더 많은 하위 그림을 원한다면 어떻게해야합니까?
Doc에서 언급했듯이 fig = plt.subplots(nrows=2, ncols=2)
하나의 Figure 객체에서 grid (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()
실제로 두 요소가 포함 된 튜플을 반환 한다는 것을 알 수 있습니다. 첫 번째 개체는 그림 개체 여야하고 다른 하나는 하위 그림 개체 그룹이어야합니다.
다시 시도해 봅시다.
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)
답변
위의 답변 외에도 type(plt.subplots())
튜플을 반환하고 압축을 풀 수없는 type(plt.subplot())
반환 matplotlib.axes._subplots.AxesSubplot
을 사용하여 객체 유형 을 확인할 수 있습니다.