바이오 대표

[ matplotlib #5 ] Python matplotlib.pyplot 기본 코드 한번에 정리_5 (Subplot 그래프 여러개) 본문

Python/matplotlib

[ matplotlib #5 ] Python matplotlib.pyplot 기본 코드 한번에 정리_5 (Subplot 그래프 여러개)

바이오 대표 2022. 7. 4. 12:09

 

Matplotlib Subplot

정리 1, 2, 3에서 python matplotlib.pyplot 의 전반적인 설명과 plotting plt.plot( ), marker, line, label, grid 옵션에 대해서 살펴보았습니다. 이번 글에서는 해당 라이브러리로 그래프의 Subplot 즉 여러 plot 그리기에 대한 설명합니다. 

  • subplot  plt.subplot( ) 

 

여러개의 그래프 (multiple plots) 진열하기

데이터를 표현할 때, 여러개의 그래프를 동시에 그려서 전체적인 그림을 보다 쉽게 확인 할 수 있습니다. subplot 을 이용해서  d여러개의 그래프를 한번에 보일 수 있습니다. 해당 function은 plt.plot( ) 을 그리기 전에 위치를 설정해 준다고 생각하면 됩니다. 

plt.subplot( # row# column, index(해당 그래프 위치) )

 

따라서 ( [1] plt.subplot( ) [2] plt.plot ) x 여러개 를 그리고 마지막에 plt.show( ) 를 이용하여 그려줍니다. 

 

예시 ) 

import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1)   # figure은 1 개의 row, 2 개의 cloumn로 이루어져있고 앞으로 그릴 그래프는 position 1 (왼쪽) 에 위치합니다. 
plt.plot(x,y)

#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2)    # 다음 그래프는 position 2 (오른쪽) 에 위치합니다. 
plt.plot(x,y)

plt.show()

 

쉽게 생각해서 가로 (수평), 위아래 (수직)으로 나열 하고자 하면 다음과 같이 하면 됩니다. 

  • 수평으로 나열: plt.subplot(1, # graph, index)
  • 수직으로 나열: plt.subplot(# graph, 1, index
...
plt.subplot(1, 4, index)
...

...
plt.subplot(4, 1, index)
...

 

 

여러 줄로 subplot 표기하기 

물론 여러 줄 (row) 의 subplot 을 표기 할 수 도 있습니다. 예를 들어 2x3 의 그래프를 그리고 싶을때의 index는 ↘ 방향으로 읽어줍니다. 즉 1 2 3 

    4 5 6  으로 표기합니다. 

 

예시 )

import matplotlib.pyplot as plt
import numpy as np

#plot 1
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 1)  
plt.plot(x,y)

#plot 2
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 3, 2)   
plt.plot(x,y)

# plot 3
x = np.array([0, 2, 5, 10])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 3)  
plt.plot(x,y)

# plot 4 
x = np.array([0, 3, 3, 3])
y = np.array([3, 3, 3, 3])
plt.subplot(2, 3, 4)  
plt.plot(x,y)

# plot 5
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])
plt.subplot(2, 3, 5)
plt.plot(x,y)

# Plot 6
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])
plt.subplot(2, 3, 6)
plt.plot(x,y)

plt.show()