program tip

matplotlib에서 여러 서브 플롯을 얻으려면 어떻게해야합니까?

radiobox 2020. 8. 19. 07:54
반응형

matplotlib에서 여러 서브 플롯을 얻으려면 어떻게해야합니까?


이 코드가 어떻게 작동하는지에 대해 약간 혼란 스럽습니다.

fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()

이 경우 무화과, 축은 어떻게 작동합니까? 그것은 무엇을합니까?

또한 이것이 동일한 작업을 수행하지 않는 이유는 무엇입니까?

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

이를 수행하는 방법에는 여러 가지가 있습니다. subplots메서드는 ax배열에 저장되는 서브 플롯과 함께 Figure를 생성합니다 . 예를 들면 :

import matplotlib.pyplot as plt

x = range(10)
y = range(10)

fig, ax = plt.subplots(nrows=2, ncols=2)

for row in ax:
    for col in row:
        col.plot(x, y)

plt.show()

여기에 이미지 설명 입력

그러나 이와 같은 것도 작동하지만 서브 플롯이있는 그림을 생성하고 그 위에 추가하기 때문에 "깨끗한"것은 아닙니다.

fig = plt.figure()

plt.subplot(2, 2, 1)
plt.plot(x, y)

plt.subplot(2, 2, 2)
plt.plot(x, y)

plt.subplot(2, 2, 3)
plt.plot(x, y)

plt.subplot(2, 2, 4)
plt.plot(x, y)

plt.show()

여기에 이미지 설명 입력


import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2)

ax[0, 0].plot(range(10), 'r') #row=0, col=0
ax[1, 0].plot(range(10), 'b') #row=1, col=0
ax[0, 1].plot(range(10), 'g') #row=0, col=1
ax[1, 1].plot(range(10), 'k') #row=1, col=1
plt.show()

여기에 이미지 설명 입력


  • 서브 플롯 호출에서 축을 풀 수도 있습니다.

  • 그리고 서브 플롯간에 x 및 y 축을 공유할지 여부를 설정합니다.

이렇게 :

import matplotlib.pyplot as plt
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax1.plot(range(10), 'r')
ax2.plot(range(10), 'b')
ax3.plot(range(10), 'g')
ax4.plot(range(10), 'k')
plt.show()


문서 읽기 : matplotlib.pyplot.subplots

pyplot.subplots()fig, ax표기법을 사용하여 두 개의 변수로 압축 해제 된 튜플 반환합니다.

fig, axes = plt.subplots(nrows=2, ncols=2)

코드

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

은 ( 는) 개체의 구성원이 아닌 subplots()함수 이므로 작동하지 않습니다 .pyplotFigure


matplotlib 버전 2.1부터 질문의 두 번째 코드도 잘 작동한다는 사실에 관심이있을 수 있습니다.

로부터 변경 로그 :

Figure 클래스에는 이제 subplots 메서드가 있습니다. Figure 클래스에는 이제 pyplot.subplots ()와 동일하게 작동하지만 기존 Figure에서 작동하는 subplots () 메서드가 있습니다.

예:

import matplotlib.pyplot as plt

fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)

plt.show()

참고 URL : https://stackoverflow.com/questions/31726643/how-do-i-get-multiple-subplots-in-matplotlib

반응형