Python/Matplotlib

[Matplotlib] plt.show() 의미와 여러 개일 때 차이

jimmy_AI 2022. 1. 19. 20:00
반응형

파이썬 plt.show() 함수 의미, 역할

이번 글에서는 파이썬 matplotlib에서 그래프를 그리기 위한 코드를 작성한 뒤,

마지막에 선언하게 되는 plt.show() 함수의 의미와 역할에 대해서 살펴보고,

여러 번 사용되는 경우의 차이점에 대해서도 다루어보도록 하겠습니다.

 

우선, scatter plot을 만들어보기 위한 임의의 데이터를 생성하겠습니다.

import matplotlib.pyplot as plt
import numpy as np

x1 = np.random.random(50)
y1 = np.random.random(50)
x2 = np.random.random(50) + 1
y2 = np.random.random(50) + 1
x3 = np.random.random(50) + 2
y3 = np.random.random(50) + 2

x1, y1은 0~1 범위 내에서, x2, y2는 1~2 범위 내에서, x3, y3는 2~3 범위 내에서

무작위로 추출된 점들의 좌표입니다.

 

 

plt.show() 기본형 : 1회 사용

그래프 내에 x축 범위, y축 범위를 고정하고 제목을 설정한 뒤,

x1과 y1 사이, x2와 y2 사이, 그리고 x3와 y3 사이의 산점도를

색을 다르게 지정하여 한 그래프 내에 동시에 표현해보도록 하겠습니다.

# plt.show() 마지막에 1회

plt.xlim(-0.2, 3.2)
plt.ylim(-0.2, 3.2)
plt.title('scatter graph', size = 13)

plt.scatter(x1, y1, color = 'blue')
plt.scatter(x2, y2, color = 'orange')
plt.scatter(x3, y3, color = 'pink')

plt.show()

plt.show()를 이처럼 마지막에 1회만 작성한 경우에는

figure 내의 x축, y축, 제목, 범례 등의 속성이 공유되며,

여러 그래프가 같은 figure 내에 동시에 그려지게 됩니다.

반응형

plt.show() 여러 개 사용

plt.show()를 선언하게 되면 figure가 초기화 되어,

x축, y축, 제목, 범례 등 figure 속성 정보도 같이 사라지게 되며,

다음 그래프부터는 새로운 figure에 그리게 됩니다.

 

3개의 scatter plot을 다른 figure에 따로 그려보도록 하겠습니다.

# plt.show() for문 순회로 여러번 실행

x = [x1, x2, x3]
y = [y1, y2, y3]
colors = ['blue', 'orange', 'pink']

for i in range(3):
    plt.xlim(-0.2, 3.2)
    plt.ylim(-0.2, 3.2)
    plt.title('scatter graph%d'%(i+1), size = 13)

    plt.scatter(x[i], y[i], color = colors[i])

    plt.show() # 총 3회 실행

x축, y축 범위도 for 문 내에서 다시 선언되고 있기에,

세 그래프 모두에서 유지되고 있습니다.

 

제목의 숫자 부분이 포맷팅 형태에 맞추어 바뀌고 있으며,

각 그래프마다 독립적인 figure 내에 따로 출력되고 있습니다.

 

이번에는 x축, y축, 제목 속성 선언을 반복하지 않고 그래프를 따로 그려보겠습니다.

x = [x1, x2, x3]
y = [y1, y2, y3]
colors = ['blue', 'orange', 'pink']

# x축, y축 범위 및 제목 : 초기화된 figure에 미반영
plt.xlim(-0.2, 3.2)
plt.ylim(-0.2, 3.2)
plt.title('scatter graph%d'%(i+1), size = 13)

for i in range(3):
    plt.scatter(x[i], y[i], color = colors[i])
    plt.show()

첫 그래프는 제목 출력 및 x축, y축의 범위가 -0.2 ~ 3.2로 지정되었지만,

plt.show() 선언 이후 figure의 속성들이 재지정되지 않아

두번째와 세번째 그래프에서는 x축, y축, 제목이 지정되지 않은 형태의 그래프

출력된 것을 확인할 수 있었습니다.

 

이 외에도 plt.show() 함수를 마지막에 선언해주게되면 속성 관련 출력 메시지 등이

생략되어 그래프만 깔끔하게 출력된 결과를 받을 수 있다는 장점이 있습니다.