Python/Matplotlib

[Matplotlib] 파이썬 산점도 색, 크기, 모양, 여러개 겹치기 설정법

jimmy_AI 2022. 2. 10. 23:42
반응형

파이썬 scatter plot 꾸미기 방법 정리

안녕하세요. 이번 시간에는 파이썬 matplotlib 라이브러리에서

두 feature 간의 상관관계를 분석할 때 용이한 산점도를 그려보고

점의 색상, 크기와 모양을 지정하는 방법과 두 개 이상의 산점도를 겹치는 방법에 대하여

다루어보도록 하겠습니다.

 

 

산점도 그리기 함수 plt.scatter 기본 사용법

우선, scatter plot을 그려보기 위하여

x와 y축 데이터 모두 -2 ~ 2 사이의 균일분포에서 추출한 데이터 x1, y1

평균 0, 표준편차 1에서 추출한 데이터 x2, y2를 가져와보겠습니다.

import numpy as np
import matplotlib.pyplot as plt

# -2 ~ 2 사이 균등분포 100개 추출
x1 = (np.random.random(100) - 0.5) * 4
y1 = (np.random.random(100) - 0.5) * 4

# 평균 0, 표준편차 1 정규분포 100개 추출
x2 = np.random.randn(100)
y2 = np.random.randn(100)

이제, 산점도 함수인 plt.scatter를 이용하여 x1과 y1의 분포 관계를 살펴보겠습니다.

plt.scatter의 사용 방법은 x축 데이터, y축 데이터를 순서대로 input으로 넣어주면 됩니다.

plt.scatter(x1, y1)
plt.show()

산점도를 그려봤지만 기본 속성은 뭔가 밋밋합니다. 이제 꾸미는 방법을 하나씩 살펴보겠습니다.

 

 

파이썬 산점도 색깔, 투명도 지정

색깔은 c 혹은 color 인자에 원하는 색상의 이름 혹은 약자(red 혹은 r)를 적어주시면 됩니다.

또한, alpha 속성으로 색상의 투명도를 지정할 수 있습니다.

plt.scatter(x1, y1, color = 'red', alpha = 0.4)
# plt.scatter(x1, y1, c = 'r', alpha = 0.4) 처럼도 가능
plt.show()

투명한 붉은색 색상의 점들로 산점도가 그려진 모습을 확인하였습니다.

 

 

scatter plot 점 크기 조정

점 크기를 조정하는 방법은 s 인자에 원하는 값을 지정하면 되는데

고정된 숫자로 지정도 가능하고, 각 점마다 다른 크기로 그려지게 만들 수도 있습니다.

 

먼저, s인자를 고정된 숫자로 지정하여 점 크기를 크게 만든 예시입니다.

plt.scatter(x1, y1, color = 'orange', alpha = 0.4, s = 150)
plt.show()

s = 150이라는 큰 값으로 지정하였더니 점의 크기가 매우 커졌습니다.

반응형

이번에는 x축의 값을 기준으로 점마다 다른 크기로 산점도를 그려보겠습니다.

plt.scatter(x1, y1, color = 'blue', alpha = 0.5, s = (x1 + 2) * 100)
plt.show()

x축의 값(x1)에 의하여 s인자의 값이 변하면서

오른쪽으로 갈수록 점들이 크게 그려진 모습을 볼 수 있었습니다.

 

 

산점도 마커 모양 변경

마커 모양은 marker 인자로 원하는 모양을 지정할 수 있습니다.

'x', 'v', 's', '<', '>' 등 여러 모양을 지원하고 있으니 원하시는 경우에 맞춰 사용하시면 됩니다.

 

여기서는 'x' 모양의 점을 사용하여 scatter plot을 그려보도록 하겠습니다.

plt.scatter(x1, y1, color = 'green', alpha = 0.7, marker = 'x')
plt.show()

점들이 원 모양 대신 x 형태로 등장하였습니다.

 

 

파이썬 산점도 여러개 겹치기, 범례 설정

이번에는 x1, y1 사이의 분포와 x2, y2 사이의 분포를 한 그래프 내에 같이 그려보겠습니다.

산점도를 여러개 겹치는 방법은 plt.scatter를 plt.show 이전에 여러번 작성해주시면 됩니다.

 

또한, plt.scatter 내부의 label 인자에 원하는 범례 이름을 적고, plt.legend를 호출하시면

범례 설정도 완료할 수 있습니다.

plt.scatter(x1, y1, color = 'purple', alpha = 0.6, label = 'uniform')
plt.scatter(x2, y2, color = 'orange', alpha = 0.7, label = 'normal')

plt.legend()
plt.show()

보라색 점들의 x1, y1 사이의 분포, 주황색 점들의 x2, y2 사이의 분포

한 그래프 내에 잘 표현되었고, 범례도 우측 아래에 잘 설정되었음을 볼 수 있었습니다.

 

 

텍스트 라벨 추가하기

각 점의 위치 옆에 라벨 정보를 포함하고 싶다면 plt.text의 기능을 활용해주시면 됩니다.

상세한 과정은 아래 링크의 글에서 추가로 다루었으니, 필요하시다면 참고해보세요.

 

[Matplotlib] 파이썬 산점도 텍스트 label 추가 방법

Python scatter plot 라벨 추가하기 예제 파이썬의 matplotlib(plt) 모듈로 산점도를 그린 뒤, 산점도의 각 점에 텍스트 레이블을 추가하는 방법을 간략하게 정리해 보겠습니다. 예시로, 다음과 같은 데이

jimmy-ai.tistory.com

이상으로 파이썬 산점도 그리기에 관하여 정리한 글을 마치도록 하겠습니다. 감사합니다.