웅진X유데미 STARTERS/TIL (Today I Learned)

[스타터스 TIL] 4일차.파이썬 데이터 시각화 (1) - 기본 그래프

라밍쏭 2023. 2. 10. 09:00
728x90


1. 새롭게 알게된 내용

1.1 기본 그래프 그리기

📌 y축 데이터로 그리기
- y축 : 1차원 리스트, 튜플, 시리즈 데이터
- x축 : 데이터의 인덱스로 자동 지정됨

data = [1, 5, 3, 9, 7]

plt.plot(data)
plt.show()

 

📌 x축, y축 데이터로 그리기
- x축과 y축 데이터의 길이가 같아야 함

x = [1,5,6,9,10]
y = [1,5,3,9,7]

plt.plot(x, y)
plt.show()

 

1.2 그래프의 종류

1.2.1 시간의 시각화

📌 선 그래프 → plt.plot()

age = [7,8,9,10,11,12,13,14,15]
height = [122.1, 127.9, 133.4, 138.8, 142.7, 151.4, 155.6, 165.0, 169.2]

plt.plot(age, height)
plt.show()

 

1.2.2 수량 비교 시각화

📌 막대 그래프 → plt.bar()

# 샘플데이터 : 100명 중 혈액형 인원 비교
blood_type=['A','B','O','AB']
count=[45,35,15,5]

plt.bar(blood_type, count)
plt.show()

 

📌 가로 막대 그래프 → plt.barh

plt.barh(blood_type, count)
plt.show()

 

 

1.2.3 비율의 시각화

📌 파이차트 → plt.pie()

plt.pie(count, labels = blood_type)
plt.show()

 

1.2.4 분포의 시각화

📌 히스토그램 → plt.hist()

# 샘플데이터 (1~100사이의 랜덤 정수 1000개)
import numpy as np
data = np.random.randint(1,101,1000)

plt.hist(data, bins = 100)  # bins : x축의 구간 갯수
plt.show()

 

📌 상자수염 그래프 → plt.boxplot()

plt.boxplot(data)
plt.show()

 

📌 바이올린 그래프 → plt.violinplot()

plt.violinplot(data)
plt.show()

 

1.2.5 관계의 시각화

📌 산점도 → plt.scatter()

# 샘플데이터 (seaborn 내장 데이터 - 지불금액에 따른 팁)
import seaborn as sns
tips = sns.load_dataset('tips')[['total_bill','tip']]

plt.scatter(tips['total_bill'], tips['tip'])
plt.show()

 

1.3 그래프 가독성

1.3.1 한글 폰트 사용

# 그래프를 노트북 안에 그리기 위해 설정
%matplotlib inline

# 필요한 패키지와 라이브러리 가져온다.
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 폰트 확인하기
[f.name for f in fm.fontManager.ttflist if 'Gulim' in f.name]
# 한글폰트 지정
plt.rcParams['font.family'] = 'Malgun Gothic'

# 한글폰트 사용 시 '-'기호 깨지는 문제 해결
plt.rcParams['axes.unicode_minus'] = False

 

1.3.2 색상, 마커, 선

 

color example code: named_colors.py — Matplotlib 2.0.2 documentation

color example code: named_colors.py (Source code, png, pdf) """ ======================== Visualizing named colors ======================== Simple plot example with the named colors and its visual representation. """ from __future__ import division import m

matplotlib.org

 

📌 색상

x = ['봄','여름','가을','겨울']
y = [19,30,15,-10]

# 색상이름, 색상이름 약자, 색상코드 모두 사용 가능
plt.plot(x, y, color = 'skyblue'/'r'/'#A566FF')
plt.show()

 

📌 마커

  • marker : 마커종류 (* . , o v ^ < > 1 2 3 4 s p * h H + x D d)
  • markersize, ms : 마커사이즈
  • markeredgecolor, mec : 마커 선 색깔
  • markeredgewidth, mew : 마커 선 굵기
  • markerfacecolor, mfc : 마커 내부 색깔
plt.plot(x, y, color = '#A566FF', marker = '*', ms = 10, mec = 'b', mew = 3, mfc = 'r')
plt.show()

 

📌 선

  • linestyle, ls : 선스타일 ('-' '--' '-.' ':' )
  • linewidth, lw : 선 굵기
plt.plot(x, y, color = '#A566FF', marker = '*', ms = 10, mec = 'b', mew = 3, mfc = 'r'
        , linestyle = '--', lw = 3)
plt.show()

 

📌 색상, 마커, 선 한 번에 적용

  • 'bo:' : 선 색상, 마커, 선 종류를 한 번에 표현
  • 색, 굵기 등 매개변수로 적용 가능
plt.plot(x, y, 'bo:', ms = 10, mec = 'r', mfc = 'k', lw = 3)

 

2. 회고

오늘부터 파이썬 데이터 시각화를 시작했다.

시각화 쪽은 스스로 많이 부족하다는 생각이 있어서 더 정리하면서 꼼꼼히 들을 생각이다.

특히 예전에 프로젝트를 하면서 그래프 내 한글이 깨지는 경우를 매번 처리할 때마다 어려움을 겪었다. 앞으로는 그런 일을 겪지 않도록 코드를 잘 저장해두고 기억해 두어야겠다.

728x90