이 코드의 작동 방식에 대해 약간 혼란스러워합니다.
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
이 경우 무화과 축은 어떻게 작동합니까? 무엇을합니까?
또한 왜이 작업이 같은 일을하지 않습니까?
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
답변
여러 가지 방법이 있습니다. 이 subplots
방법은 하위 그림과 함께 그림을 만든 다음 ax
배열에 저장합니다 . 예를 들면 다음과 같습니다.
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(nrows=2, ncols=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 버전 2.1부터 질문의 두 번째 코드도 잘 작동한다는 사실에 관심이있을 수 있습니다.
로부터 변경 로그 :
이제 Figure 클래스에 서브 플로트 메소드가 있음 이제 Figure 클래스에 pyplot.subplots ()와 동일하지만 기존 Figure에서 동작하는 subplots () 메소드가 있습니다.
예:
import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
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()
함수 이기 때문에 작동하지 않습니다 .pyplot
Figure