기타/What I Learned
[AI] Matplotlib 데이터 시각화(2)
가죽방패
2021. 10. 21. 15:21
※ 막대 그래프와 히스토그램
- 막대 그래프는 여러값을 비교하는데 적합한 그래프이며 한눈에 비교하기 편하다는 특징이 있고
히스토그램은 일정 시간 동안의 숫자 데이터 분포를 시각화 하는데 적합하다는 특징이 있다.
예시)
from elice_utils import EliceUtils
elice_utils = EliceUtils()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
fname='./NanumBarunGothic.ttf' # 폰트 변경 가능
font = fm.FontProperties(fname = fname).get_name()
plt.rcParams["font.family"] = font
# Data set
x = np.array(["축구", "야구", "농구", "배드민턴", "탁구"])
y = np.array([13, 10, 17, 8, 7])
z = np.random.randn(1000)
fig, axes = plt.subplots(1, 2, figsize=(8, 4)) # 1*2 모양으로 그래프를 그리고 가로로 배치
# Bar 그래프
axes[0].bar(x, y)
# 히스토그램
axes[1].hist(z, bins = 200)
# elice에서 그래프 확인하기
fig.savefig("plot.png")
elice_utils.send_image("plot.png")
출력)
axes[0] 는 막대 그래프를 의미하고 axes[1] 은 히스토그램을 의미하는 것을 유의해야 하고
matplotlib의 pyplot 으로 그래프를 그릴때 기본 폰트는 한글을 지원하지 않으므로 한글을 사용할 경우
한글을 지원하는 폰트의 종류로 변경해 주어야 한다.
※ Matplotlib with Pandas
- Pandas 를 이용해 csv 파일을 불러온 뒤 시각화 할 수 있다.
예시)
from elice_utils import EliceUtils
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
elice_utils = EliceUtils()
# 아래 경로에서 csv파일을 읽어서 df 변수에 저장해보세요.
# 경로: "./data/pokemon.csv"
df = pd.read_csv("./data/pokemon.csv")
# 공격 타입 Type 1, Type 2 중에 Fire 속성이 존재하는 데이터들만 추출해보세요.
fire = df[(df['Type 1'] == 'Fire')|(df['Type 2'] == 'Fire')]
# 공격 타입 Type 1, Type 2 중에 Water 속성이 존재하는 데이터들만 추출해보세요.
water = df[(df['Type 1'] == 'Water')|(df['Type 2'] == 'Water')]
fig, ax = plt.subplots()
# 왼쪽 표를 참고하여 아래 코드를 완성해보세요.
ax.scatter(fire['Attack'], fire['Defense'],
marker='*', color='R', label='Fire', s=50)
ax.scatter(water['Attack'], water['Defense'],
marker='.', color='B', label='Water', s=25)
ax.set_xlabel("Attack")
ax.set_ylabel("Defense")
ax.legend(loc="upper right")
# elice에서 그래프 확인하기
fig.savefig("plot.png")
elice_utils.send_image("plot.png")
출력)