본문 바로가기
알고리즘 PS (백준)/🐍 Python (파이썬)

[파이썬 python] Matplot 설치 및 활용 (데이터 시각화 , 그래프)

by 코딩하는 동현😎 2022. 6. 19.

1. pip 설치하기(윈도우 / 맥 mac)

pip (파이썬 패키지 관리 시스템) 를 설치 안했다면? (맥 MAC) - 3.9 버전 기준

윈도우는 python3.9 말고 python 으로 하세요!


2. pip로 matplot 설치하기

(python -m pip install --upgrade pip) - pip 설치

윈도우
$ python -m pip install matplotlib

맥 mac 3.9 버전
$ python3.9 -m pip install matplotlib

matplot

데이터 시각화 라이브러리로 다양한 형태의 그래프 그리기 기능을 제공합니다.

인공 지능 연구 분야에 많이 활용하고 아래와 같이 작성해서 사용할 수 있습니다.

 

-import matplotlib.pyplot

import matplotlib.pyplot as plt


기본 그래프 그리기

그래프를 그리는 함수에는 plot() , bar() , barh() 가 있고 인자로 ( x리스트 , y리스트)를 받습니다

import matplotlib.pyplot as plt

xdata = [1,2, 3,4]
ydata = [10 ,5 ,20 ,35]
#그래프
plt.plot(xdata , ydata)
plt.show()
#막대형 그래프
plt.bar(xdata , ydata)
plt.show()
#90도 회전한 막대 그래프
plt.barh(xdata ,ydata)
plt.show()

결과


그래프 추가 옵션

공통 옵션

  • title('') : 제목을 표시
  • legend() : 범레를 표시

plot의 옵션

  • 색상 : rgb
  • 모양 : , ^ (원과 삼각형)
  • 레이블  : label
import matplotlib.pyplot as plt

data1 = [1,2, 3,4]
data2 = [4 ,3 ,2 ,1]

plt.plot(data1, 'r.' , label='circle')
plt.plot(data2, 'g^' , label='triangle')

#그래프
plt.title("title of plot")
plt.legend()

plt.show()

실행결과


히스토그램 그리기

hist(리스트 )를 받으면 빈도수를 계산해서 히스토그램을 출력할 수 있습니다.

데이터가 연속변수이면 히스토그램으로 분석하기 힘드므로, bins 옵션을 이용해서 최대와 최소의 구간을 n개의 구간으로 나눠서 그래프를 그리는 것입니다.

# 히스토그램
import matplotlib.pyplot as plt
import csv
f=open('Seoul.csv' , encoding = "cp949")
data = csv.reader(f)
# 8월에 최고기온 값을 aug에 저장
aug = []

for row in data:
    month = row[0].split('.')[1]
    if row[-1]!=1:
        if month=='8':
            aug.append(float(row[-1]))

# bins -> 최대 최소값사이를 100개로 쪼개서 구간설정
plt.hist(aug , bins=100 , color='r')
plt.show()

출력결과


박스 그래프 그리기

박스 그래프(boxplot)는 최대,최소, 3/4 , 1/2 , 1/4값을 표현할수 있는 그래프입니다.

boxplot(데이터리스트)는 그 데이터를 이용해서 그래프를 그리고,

2차원 리스트를 받으면 각 리스트 항목에 대해서 각각 그래프를 그려서 출력합니다.

#기온 데이터를 상자그림으로 표현
import matplotlib.pyplot as plt
import csv
f=open('Seoul.csv' , encoding = "cp949")
data = csv.reader(f)

# [ [], [], [], [], ....] 리스트안에 12개의 개별 리스트 생성
month = []
for i in range(12):
    mon = []
    month.append(mon)

for row in data:
    month[int(row[0].split('.')[1])-1].append(float(row[-1]))

plt.boxplot(month)
plt.show()

출력결과

 


원(파이)그래프 그리기

pie(데이터리스트 , 옵션들)함수를 이용하면 원 그래프를 그릴수 있습니다.

옵션들에는 다음과 같습니다

  • labels : 각 조각의 이름
  • color : 각 조각의 색깔
  • autopct : 각 조각의 비율을 표현할 형식 ex) .1f 소수점 1자리
  • explode : 조각의 돌출 정도

legend()를 이용하면 범례를 표시할 수 있습니다

import matplotlib.pyplot as plt
data = [10, 30 ,20 , 25]
label = ['A', 'B', 'C', 'D']
color = ['hotpink', 'darkmagenta', 'pink', 'deeppink']
plt.pie(data , labels=label , autopct="%.1f%%", colors=color , explode=(0, 0, 0.1, 0))
plt.legend()
plt.show()

출력결과


scatter 그래프 그리기

scatter 그래프는 이차원 맵에 점찍는 그래프 표현 방식 입니다.

인자로는 x값 , y값을 받고 아래와 같이 추가 옵션들을 받습니다.

  • s : size로 , 각 점들의 크기값을 받습니다.
  • c : color로 각 점들의 색상을 받지만 , cmap이 있으면 그것의 인덱스로 받을수있습니다.
  • cmap : colormap으로 이번 실습에는 jet 맵을 가져오겠습니다.

colorbar() 함수를 쓰면 cmap을 컬러바 형식으로 옆에 출력할수 있습니다.

import matplotlib.pyplot as plt

xdata = [1,2,3,4]
ydata = [20, 10 ,30 , 50]
sizes = [10, 50, 100, 200]
plt.scatter(xdata , ydata , s=sizes , c=range(4) , cmap='jet')
plt.colorbar()
plt.show()

출력 결과


 

반응형

댓글