PYTHON/데이터분석

통계분석시각화 : matplotlib

sshhhh 2023. 9. 15.

#matplotlib

https://matplotlib.org/

 

Matplotlib — Visualization with Python

seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data visualization Cartopy Cartopy is a Python package des

matplotlib.org

파이썬에서 데이터를 효과적으로 시각화하기위해 만든 라이브러리

매트랩의 시각화 기능을 모델링해서 만들어졌다.

2차원 선 그래프(plot), 산점도, 막대그래프, 히스토그램, 파이그래프를 그릴 수 있다.

 

 

#선 그래프(plot)

plt.plot( [x, ] y [ , fmt] )   : x,y축 좌표의 값 fmt가 없다면 기본형식으로 그래프를 그린다.

plt.plot(data) : x,y값 전달해서 도면추가
plt.show() : 시각화

 

 

import numpy as np
data = np.arange(10) #y축 데이터
data
plt.plot(data) #도면 추가, x축 데이터는 0부터 y의 개수만큼 1씩 증가하는 값으로 자동할당
plt.show() #시각화

 

 

 


#y값만 인자로 전달, x축 데이터:0부터 1씩 증가하는 값으로 자동 할당
plt.plot([1, 4, 7, 9, 12, 15])
plt.show()

 

 

plt.plot([1, 4, 7, 9, 12, 15]) #y값
plt.title("plt.plot([1, 4, 7, 9, 12, 15])") #제목
plt.show() #화면에 시각화

 

 

 

 


 

plt.plot([1, 2, 3, 4, 5, 7] ,[1, 2, 10, 6, 12, 15]) #x,y 값 전달
plt.title("plt.plot([1, 2, 3, 4, 5, 7] ,[1, 2, 10, 6, 12, 15])") 
plt.show()

#마커지정
plt.plot([1, 2, 3, 4, 5, 7] ,[1, 2, 10, 6, 12, 15], '.')

"""
1. 'o')
2. 'o-'
3. 'o:'

각각 다른 모양으로 생성된다.
"""

 

 

 

 


데이터 두개 이상 전달

#데이터 두 개 이상 전달 (마커사용)
plt.plot([1, 2, 3, 4, 5, 7] ,[1, 2, 10, 6, 12, 15], 'bo'   #파란 원
         ,[1, 2, 3, 4, 5, 7] ,[8, 9, 10, 15, 11, 10], 'r^' ) #빨간 세모
plt.title("plt.plot([1, 2, 3, 4, 5, 7] ,[1, 2, 10, 6, 12, 15], 'bo',[1, 2, 3, 4, 5, 7] ,[8, 9, 10, 15, 11, 10], 'r^')") 
plt.show()


축 범위,이름 지정

plt.plot([1, 2, 3, 4, 5] ,[90, 80, 85, 77, 97], 'bo')
plt.plot([1, 2, 3, 4, 5] ,[95, 86, 75, 90, 67], 'r^' ) 
plt.axis([0,6,0,100]) #x축(0,6) y축(0,100)
plt.title("scores") 
plt.xlabel('number') #x축 이름
plt.ylabel('score')  #y축 이름
plt.show()


#sub 도표
plt.subplot(221) #2X2 중 1
plt.title("221")
plt.plot([1,2,3,4], 'ro-')

plt.subplot(222) #
plt.title("222")
plt.plot([4,3,2,1], 'b.:')

plt.subplot(223) 
plt.title("223")
plt.plot([1,3,2,4], 'c^-.') #자홍색 삼각형위쪽 실선

plt.subplot(224) 
plt.title("224")
plt.plot([2,4,1,3], 'k.--') 

plt.show()


#막대그래프

항목의 수량이 많고 적음을 한눈에 알아본다. 여러 항목의 데이터를 서로 비교할때 주로 이용

plt.bar( x ,height)  : x(x축)

names = ['aa', 'bb', 'ccc']
scores = [80, 90, 85]
plt.bar(names, scores) x축, y값표시
plt.xlabel('name')
plt.ylabel('score')
plt.title('name-score bar')
plt.show()


years=['2018', '2019', '2020', '2021']
incomes=[5000, 5600, 4300, 7800]
#수직그래프
plt.bar(years,incomes)
plt.show()
#수평그래프
plt.barh(years, incomes)
plt.show()

 


색상지정

colors=['red' , 'green' , 'blue']
names=['a','b','c']
income=[100,200,300]
plt.bar(names,income,color = colors)
plt.title("color")
plt.show()

 


income1,2 두개 출력되지 않는다.

names = ['a', 'b', 'c']
income1=[100, 160, 130]
income2=[200, 230, 260]
plt.bar(names,income1)
plt.bar(names,income2)
plt.show()

 

 

bottom 옵션 -> income1,2 같이 시각화
names = ['a', 'b', 'c']
income1=[100, 160, 130]
income2=[200, 230, 260]
plt.bar(names,income1)
plt.bar(names,income2, bottom=income1)
plt.show()

 

 


#xtick을 개발자가 정하기
seqno = [1,2,3,4,5,6,7,8,9]
scores=[90, 50, 70, 86, 90, 100, 88, 74, 65]
num_str=[str(no) for no in seqno]
plt.bar(num_str, scores)
plt.xlabel("no")
plt.xlabel("score")
plt.title("no-score")
plt.show()


#파이그래프

 

전체 데이터에서 각 항목이 차지한 비율을 비교할 때 이용

locales = {'a', 'b', 'c', 'd', 'e'}
incomes = [2300, 1200, 1800, 800, 400]
plt.pie(incomes, labels=locales)
plt.title("incomes")
plt.show()

 

 

locales = {'a', 'b', 'c', 'd', 'e'}
incomes = [2300, 1200, 1800, 800, 400]
exs=[0, 0.1, 0, 0, 0]
plt.pie(incomes,labels=locales,explode=exs, autopct="%.2f", pctdistance=0.8, shadow=True)
#돌출, 퍼센트, 그림자 표시
plt.title("incomes")
plt.show()

 

 


#마커지정 약어

 

컬러지정을 위한 약어

b
g
r
c 청녹
m 자홍
y
k
w

 

선 스타일 지정을 위한 약어

- 실선
-- 파선 ----
: 점선
-. 파선 점선 혼합

 

마커지정을 위한 약어

^,v,<,> 삼각형
s 사각형
p 오각형
h ,H 육각형
*
+ 더하기
x , X x , 채워진x
D, d 다이아몬드

 

댓글