Python/Visualization

[Python] matplotlib 시작하기

언킴 2022. 2. 25. 13:54
반응형

matplotlib은 파이썬에서 시각화할 때 주로 사용되는 패키지 중 하나이다. seaborn, folium 등의 다양한 패키지가 존재하지만, 가장 많이 사용되는 matplotlib에 대해서 다루어보자. 

 

 

1. plt.figure()

figure는 하나의 종이라고 생각하면 된다. 우리가 그림을 그리기 위해서는 종이가 필요한데, figure는 종이를 만들어주는 함수라고 보면 된다. figsize 인자를 통해 종이의 크기를 설정해주고, facecolor 인자를 통해 종이의 색을 지정해줄 수 있다. 

fig = plt.figure(figsize=(7, 7), facecolor = 'linen') # red
plt.show()

linen, red

2. plt.add_subplot()

add_subplot을 통해 ax라는 변수에 subplot을 받아 선 혹은 점을 그릴 수 있다. ax.plot을 통해 선을 그릴 수 있으며, ax.scatter 함수를 통해 산점도를 그리면 된다. 

fig = plt.figure(figsize = (7, 7), facecolor = 'linen')
ax = fig.add_subplot()
ax.plot([2, 3, 1])
plt.show()

fig = plt.figure(figsize = (7, 7), facecolor = 'linen')
ax = fig.add_subplot()
ax.scatter([2, 3, 1], [2, 3, 4])
plt.show()

 

 

add_subplot을 사용하게되면 내부 인자를 통해 종이 하나에 여러 그림을 그릴 수 있게 된다. add_subplot(row, columns, i)로 생각을 하면 되는데, row, columns을 통해서 행렬을 구성하고, i를 통해 몇번째 인자에 대한 그림인지를 지정해서 넣어줄 수 있다. 아래의 경우 3x1 형태로 그림을 그렸다. 그후 각 하나의 그림을 변수에 할당하고 값을 지정하면 다른 그림을 그릴 수 있다. 

fig = plt.figure(figsize = (7, 7), facecolor = 'linen')
ax1 = fig.add_subplot(311)
ax2 = fig.add_subplot(312)
ax3 = fig.add_subplot(313)
plt.show()

 

3. plt.subplots()

plt.add_subplot과 유사하지만 조금 다른 부분이 있다. subplots 내부 인자에는 nrows, ncols, figsize 등 인자가 존재하는데, figsize를 지정할 수 있고, 그림의 수를 nrows, ncols을 통해 만들 수 있다. 

fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
plt.show()

fig, axes = plt.subplots(nrows=2, ncols=1)
axes[0]
axes[1]
plt.show()

 

4. plt.subplot2grid()

add_subplot, subplots, subplot2grid 모두 비슷한 형태로 그래프를 그릴 수 있다. 

fig = plt.figure(figsize=(7, 7), facecolor='linen')
ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2, fig=fig)
ax2 = plt.subplot2grid((2, 2), (1, 0), fig = fig)
ax3 = plt.subplot2grid((2, 2), (1, 1), fig = fig)
plt.show()

fig = plt.figure(figsize=(7, 7), facecolor='linen')
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=2, fig=fig)
ax1 = plt.subplot2grid((3, 3), (1, 0), colspan=2, fig=fig)
ax1 = plt.subplot2grid((3, 3), (2, 0), colspan=2, fig=fig)
ax1 = plt.subplot2grid((3, 3), (0, 2), colspan=1, rowspan=3, fig=fig)
plt.show()