Bar & Histogram

namung·2021년 11월 25일
0

NIPA AI 온라인 교육

목록 보기
18/19
post-thumbnail

Bar plot

  • 말 그래로 bar 형태로 나타난 그래프.
# bar
x = np.arange(10)
fig, ax = plt.subplots(figsize=(12, 4)) # 그래프 가로 12, 세로 4
ax.bar(x, x*2)

x = np.random.rand(3) # 0~1 사이 숫자를 랜덤으로 3개를 뽑음.
y = np.random.rand(3)
z = np.random.rand(3)
data = [x, y, z]
fig, ax = plt.subplots()
x_ax = np.arange(3) # 0, 1, 2
for i in x_ax:
ax.bar(x_ax, data[i], # x축 = x_ax, y축 = data[i] = x,y,z 위로 쌓아 올려감
bottom=np.sum(data[:i], axis=0))  # bottom 값 (쌓아올린 시작점을 바닥부터 잡고 올라감. axis = 0, 즉 세로로 x, y, z가 쌓아 올라가도록 구성함.)
ax.set_xticks(x_ax)  # x축에 ticks 붙임.
ax.set_xticklabels(["A", "B", "C"]) # ticks에 라벨 붙임.

Histogram

  • 도수분포표
fig, ax = plt.subplots()
data = np.random.randn(1000) # 1000개의 data를 랜덤하게 뽑아서 사용
ax.hist(data, bins=50) # bins = 막대. 1000개의 랜덤한 데이터를 뽑았는데 이걸 50개의 막대로 나타냄.

[실습 3]막대 그래프 & 히스토그램

문제

xy 데이터는 각 스포츠의 종목과, 선호하는 학생의 수를 조사한 결과입니다.
x와 y 데이터로 막대 그래프를 그립니다.
z 데이터는 1000개의 정규분포 난수를 담고 있습니다.
z 데이터를 등급을 50개로 나눈 히스토그램으로 출력해봅니다.

  1. 막대 그래프의 데이터의 y축 값을 아래 표를 참고하여 변경하고 실행버튼을 눌러 그래프가 어떻게 변하는지 확인해보세요.
축구야구농구배드민턴탁구
13101787
  1. hist() 함수에서 bins 값을 200으로 변경하고 실행버튼을 눌러 그래프가 어떻게 변하는지 확인해보세요.
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 #matplotlib 의 pyplot으로 그래프를 그릴 때, 기본 폰트는 한글지원 하지 않기 때문에 한글을 지원하는 `나눔바른고딕`폰트로 바꾼 코드임.
fname='./NanumBarunGothic.ttf'
font = fm.FontProperties(fname = fname).get_name()
plt.rcParams["font.family"] = font

# Data set
x = np.array(["축구", "야구", "농구", "배드민턴", "탁구"])
y = np.array([18, 7, 12, 10, 8])
z = np.random.randn(1000)

fig, axes = plt.subplots(1, 2, figsize=(8, 4))

# Bar 그래프
axes[0].bar(x, y)
# 히스토그램
axes[1].hist(z, bins = 50)


# elice에서 그래프 확인하기
fig.savefig("plot.png")
elice_utils.send_image("plot.png")

code

# 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))
>
# Bar 그래프
axes[0].bar(x, y)
# 히스토그램
axes[1].hist(z, bins = 200)

실행 결과

profile
비전공자의 개발자 도전기 | 공부한 것을 기록합니다.

0개의 댓글