답변:
여러 가지 방법이 있습니다. 이 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()
plot(x, y)
사용자 정의 함수에서 플롯을 가져 와서 networkx로 그래프를 만듭니다. 사용 방법?
axn = ax.flatten()
다음 for axes in axn: axes.plot(x,y)
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()
ax
는 못합니다 fig
. 그들은 무엇인가?
matplotlib.figure.Figure
플롯 된 그림을 많이 조작 할 수있는 클래스입니다. 예를 들어 특정 서브 플롯에 컬러 바를 추가하고 모든 서브 플롯 뒤의 배경색을 변경할 수 있습니다. 이 서브 플롯의 레이아웃을 수정하거나 새로운 작은 도끼를 추가 할 수 있습니다. 바람직하게는 방법을 통해 얻을 수있는 모든 서브 플롯에 대해 하나의 메인 타이틀을 원할 수 있습니다 fig.suptitle(title)
. 마지막으로 플롯에 만족하면 fig.savefig
방법 을 사용하여 저장할 수 있습니다 . @Leevo
서브 플롯 호출에서 축을 언팩 할 수도 있습니다
그리고 서브 플로트간에 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