Python을 사용하여 두 개의 플롯을 나란히 만드는 방법은 무엇입니까?


94

matplotlib에서 다음 예제를 찾았습니다.

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

제 질문은 다음과 같습니다. 플롯을 나란히 배치하려면 무엇을 변경해야합니까?

답변:


148

서브 플롯 설정을 다음으로 변경하십시오.

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

매개 변수 subplot는 행 수, 열 수 및 현재 사용중인 서브 플롯입니다. 따라서 1, 2, 1"1 행 2 열 그림 : 첫 번째 서브 플롯으로 이동"을 의미합니다. 그런 다음 1, 2, 2"1 행 2 열 그림 : 두 번째 서브 플롯으로 이동"을 의미합니다.

현재 2 행 1 열 (즉, 다른 하나 위에) 레이아웃을 요청하고 있습니다. 대신 1 행 2 열 레이아웃을 요청해야합니다. 그렇게하면 결과는 다음과 같습니다.

나란히 플롯

서브 플롯의 겹침을 최소화하기 위해 다음을 시작할 수 있습니다.

plt.tight_layout()

쇼 전에. 굽힐 수 있는:

깔끔한 나란히 플롯


45

이 페이지를 확인하세요 : http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplots유사하다. 그림의 매개 변수 설정이 쉽기 때문에 더 좋다고 생각합니다. 처음 두 인수는 레이아웃을 정의하고 (예 : 1 행, 2 열) 기타 매개 변수는 그림 크기와 같은 기능을 변경합니다.

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()

여기에 이미지 설명 입력


1
플롯을 더 넓고 높게 만드는 방법도 있습니까?
Heißenberg93

나는 표창 plt.xlim / ylim 의미 해달라고
Heißenberg93

5
사용하는 것이 좋습니다 plt.subplots. 인수 figsize를 지정 하여 Figure의 크기를 정의 할 수 있습니다 . 에서와 같이 plt.subplots(1, 2, figsize=(20, 4)). 그렇지 않으면 먼저 그림과 그림 크기를 정의 할 수 plt.figure(figsize=(20, 4))있습니다..
busybear

어떤 이유로 "plt.savefig ( '.... png')"서브 플롯을 저장하려고하면 빈 데이터가 표시됩니다. 처음에는 똑같은 코드를 추정합니다 (plt.figure (figsize = (7, 3)) 만 추가했습니다).
Heißenberg93

당신은 호출 plt.savefigplt.show? 그렇다면 문제 일 가능성이 높습니다.
busybear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.