기본 그래프 그리기

Soyoung Park·2022년 8월 16일
0

TIL python

목록 보기
6/16

'matplotlib 라이브러리'

파이썬으로 데이터를 시각화할 때 가장 많이 사용하는 라이브러리
2D 형태의 그래프, 이미지 등을 그릴 때 사용

matplotlib
^ 데이터만 있으면 코드보고 쉽게 차트 그릴 수 있음.

방법:

1. colab 오픈
2. pyplot 모듈을 'plt' 별명으로 부르기(as,alias)

1. 그래프 그리기 시작

1-1. y값만 주어졌을 때

1-2. x,y값 주어졌을 때

1-3. 형태 바꾸기

1-4. 타이틀 넣어주기

2. 여러개의 그래프, plot 그리기

2-1. 여러개 plot 그리기

2-2. 각 선의 범례

2-3. 범례 위치 변경

plt.legend() 혹은 plt.legend(loc=0)이 기본값


^위의 그래프는 loc=6 의 위치에 위치해있다.

3. 그래프 색 변경

3-1. 그래프 색 변경

color 혹은 c로 입력 가능

3-2. 기본색 5가지는 약자 사용

1) r, g, b, k, y
2) 사실상 color='r' 이렇게 공식적으로 안쓰고 'r' 이렇게만 써도 입력됨.

4. 그래프 선 모양 변경

4-1. 선모양 변경

linestyle ex) -- , : ,  등

4-2. 마커 사용**

**수식 섞어쓸 때 오류나는데 각각 써주고 싶으면 각각 입력해주면 됨.

5. 내 생일의 기온 변화를 그래프로 그리기

5-1) 데이터 준비시키고 데이터 확인 작업

5-2) 데이터 개수 확인

5-3) 최고 기온 데이터 빨간색으로 시각화

5-4) 그래프 크기 및 해상도 조절

5-5) 그래프 기간 설정 (날짜)**

format을 기준으로 "datetime 형변환".
1)
2022-08-01
%Y-%m-%d
2)
2022/08/01
%Y/%m/%d

cf) format datetime

방법1)


방법2)



^ 그래프 중간에 데이터가 없는 부분, 결측지 (6.25전쟁 때 데이터 없음)

^ dot형태로 변경 (r.)

5-6) 날짜 데이터 추출하기

split한 전체 리스트

8월 데이터 추출

5-7) 특정 월, 일 데이터들 년도별로 뽑기

2002년의 8월 데이터

^위의 코드 잘 안보이면 아래꺼 확대본

2월 14일의 최고기온 데이터 (년도별로)

^위의 코드 입력하면 아래와 같은 결과 도출

if row[0].split('-')[1] == '02' and row[0].split('-')[2] =='14':     
해석) 아래 파일의 Notepad++를 봐야함. 
     row[0] = 날짜 / split[1] = 월 / row[0] = 날짜 / split[2] = 일

5-8) 특정 데이터들 여러 기준으로 뽑기

스스로 해보기 ..^^**

문제: 서울의 기온 데이터에서 내 생일 기준으로 
     최저 기온, 평균 기온, 최고 기온을 하나의 차트(그래프)로 시각화하기. 

(1) 아래 코드와 그래프는 02월 14일 년도별 최고.최저.평균 기온을 나타냄.

^위의 코드 입력하면 아래와 같은 그래프 도출

(2) 10월 4일 w/ prof.

5-9) 특정 날짜(기간) 이후로만 데이터 도출하기


^위의 코드 입력했을 때 아래와 같은 값 도출

5-10) 한국어 글꼴 설정하기

^위의 코드 복붙해서 새로 넣어줘.(글꼴  NanumBarunGothic)

^ 위에서 설정한 한국어 
1) 글꼴 설정해주고 
2) 제목입력 
3) 마이너스 기호깨짐 방지
해주기


^위의 두 코드 입력해주면 이 그래프 도출 가능

5-11) 하드코딩 없이 사용자가 입력해 데이터 추출하기

(1) 사용자가 년도 설정하여 그래프 보여주기



(2) (미완성) start_year 와 end_year 사용자가 설정하기



^미완성된 이유: 사용자가 년도 설정된 것과 그래프가 보여주는 년도가 다름 
              그래서 month와 date를 없애줌. year 기준이니까 year만 남겨줌. 

(2-1) start_year와 end_year 완성




^ 위와 같이 사용자가 년도 입력하게 할 수 있음

흠.... 사용자가 몇 년도부터 몇 년도까지 설정할 수 있는지 알 수 있도록 
표시해주는 방법...도 궁금한데 내 머릿속이 과부화가 올 것 같다... ㅎㅎ

6. 기온 데이터를 다양하게 시각화하기

책 모두의 데이터 분석 파이썬 77p

6-1) 히스토그램

hist() 함수.
빈도수에 따라 차트 그리기.

cf) p.82 주사위 1,000,000 시행하면 1-6 주사위 번호 나올 확률이 거의 비슷해짐. 

^ 먼저 
1)한글깨짐 방지 코드 복붙해주고 
2)실행시키고 
3)런타임 다시 시작 및 모두 실행
import matplotlib as mpl
import matplotlib.pyplot as plt
 
%config InlineBackend.figure_format = 'retina'
 
!apt -qq -y install fonts-nanum
 
import matplotlib.font_manager as fm

fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic') 
mpl.font_manager._rebuild()

(6-1-1)

+ bins


(6-1-2) 8월달 히스토그램

(6-1-3)

(6-1-4)

(6-1-5) 1월, 6월, 8월달 히스토그램

(6-1-6)

(6-1-7)사용자가 월 입력하기



6-2) 기온 데이터를 상자 그림으로 표현하기

수치형 데이터의 유효성 확인할 때 사용

6-2-1) 1월과 8월 boxplot


6-2-2) 1월과 8월달 boxplot list로 묶어줌

aug와 jan의 boxplot을 []로 묶어써줌 


6-2-3) 1월부터 12월까지 최고 기온 데이터 상자 그림으로 표현

1) 12달 온도를 담을 수 있는 변수(리스트에 리스트를 담자)
   month=[[0],[1],[2],...,[11]]

   첫번째: [0]안에 month[0].append('01')
   두번째: [1]안에 month[1].append
   .
   .
   .

month 데이터 상자 그림


+(1) 아래 사진은 위의 코드를 1월, 9월로 예를 든 추가 설명

1) split 잘라 문자형 -> 숫자로 int()형변환시켜준거다.
2) -1을 해준 이유는 컴퓨터 언어는 0시작이니 숫자로 된 거에서 빼준다(?)

+(2) 코드 추가 설명

^ 위의 사진에 대한 설명:
검은색인 <month ....>  와 
아래 초록색 두 줄 <temp...> <month...> 똑같은 코드이다.
다른 방법으로 입력한 것일 뿐.

day 데이터 상자 그림

1개의 댓글

comment-user-thumbnail
2022년 8월 16일

사용자가 몇 년도부터 몇 년도까지 설정할 수 있는지 알 수 있도록 하는 방법은
for row in data: 구문에서 날짜 데이터 수집하잖아요?
날짜 수집한 list(아마도 date_list) 에서 첫 번째 날짜(date_list[0])와 마지막 날짜(date_list[-1]를 추출해서 print문으로 표시 해 주면 되겠네요

답글 달기