반응형
해당 포스팅의 목차는 다음과 같다.
1. matplotlib (이하 plt)
2. 활용 예시
1) 그래프 생성
2) 제목부여
3) x축과 y축
4) 두개의 그래프
5) 범례와 그래프 색상 변경
3. 예제
1. matplotlib (이하 plt)
시각화를 위한 라이브러리를 추가해야한다.
# matplotlib안의 pyplot만을 import하여 필요한 라이브러리만 추가하도록 한다.
import matplotlib.pyplot as plt
2. 활용예시
1) 그래프 생성
그래프를 생성하는 하나의 예시를 들어보자면 아래와 같다.
import matplotlib.pyplot as plt
plt.plot([100,200,300]) #y축의 내용
plt.show() #보여줘
2) 제목부여
import matplotlib.pyplot as plt
plt.title('TITLE') #인코딩 문제 발생 가능성 있으므로 가급적 영어 지향
plt.plot([100,200,300]) #y축의 내용
plt.show() #보여줘
3) x축과 y축
import matplotlib.pyplot as plt
plt.title('TITLE') #인코딩 문제 발생 가능성 있으므로 가급적 영어 지향
plt.plot([-1, -2, -3], [100,20,300]) #x축의 내용, y축의 내용
plt.show() #보여줘
먼저 넣은 내용이 오름차순 정렬되어 x축에 표시되고, 뒤에 넣은 내용이 y축이 된 모습을 볼 수 있다.
이때 반드시 리스트 두개의 요소 개수가 같아야한다.
4) 두개의 그래프
import matplotlib.pyplot as plt
plt.plot([10,20,30])
plt.plot([10,-20,-30])
plt.show()
5) 범례와 색상 그래프 색상 변경
이때, plot()메서드의 인자에 따라 마커의 종류, 점선의 간격 등 다양한 설정을 줄 수 있게 되는데 그에 대한 내용은 최하단의 링크를 참고하여 확인하는 것을 추천한다.
import matplotlib.pyplot as plt
'''
plot()의 lable속성으로 범례의 이름을 설정
legend()로 범례를 출력
==================================
plot()의 color속성으로 그래프의 색상을 변경
'''
# 인코딩 문제로 인해 범례는 영어로 설정
plt.plot([10,20,30],color='red' ,label='apple')
plt.plot([10,-20,-30],color='skyblue' , label='banana')
plt.legend() #범례를 출력해주세요!
plt.show()
3. 예제
위의 내용을 바탕으로 하여 csv파일을 다운받고, 원하는 데이터에 한하여 시각화를 진행하는 예제를 풀이하였다.
요구사항은 다음과 같다.
해당하는 파일의 링크는 아래와 같다.
https://data.kma.go.kr/climate/RankState/selectRankStatisticsDivisionList.do?pgmNo=179
코드에 대한 설명은 주석으로 확인이 가능하다.
import csv
import matplotlib.pyplot as plt
maxTemp=[] #최고기온
minTemp=[] #최저기온
mon=input('월 입력: ')
day=input('일 입력: ')
with open('test.csv', encoding='CP949') as file:
data=csv.reader(file)
next(data) #헤더의 내용을 지움(데이터에서는 삭제하지 않음)
for v in data:
# print(v) #날짜를 확인하기 위해서는 v[2]의 데이터가 필요하다
date=v[2].split('-') #연월일이 하이픈기준으로 쪼개 넣어서, list화를 시킴
# '07'과 7의 비교는 어려우므로, 07을 잠깐 int로 형변환 하여 비교!
if int(date[1])==int(mon) and date[2]==day: #내가 입력한 월과 일의 데이터를 요청
maxTemp.append(float(v[4]))#형변환
minTemp.append(float(v[6]))
# print(maxTemp) #필요한 정보를 출력!
# print(minTemp)
'''
시각화 작업
'''
plt.title('1980~2022 '+mon+'/'+day) #제목
plt.plot(maxTemp, color='hotpink' , label='MAX') #범례추가
plt.plot(minTemp, color='green', label='MIN') #범례추가
plt.legend()
plt.show()
결과는 다음과 같다.
파이썬의 데이터 시각화가 잘 정리된 참고자료를 첨부하였다.
https://wikidocs.net/book/5011
반응형
'Python' 카테고리의 다른 글
[아나콘다] 파일 입출력_JSON (0) | 2022.10.26 |
---|---|
[아나콘다] 데이터 분석 및 가공_3 (0) | 2022.05.13 |
[아나콘다] 데이터 분석 및 가공_2 (0) | 2022.05.11 |
[아나콘다] 데이터 분석 및 가공 (0) | 2022.05.10 |
[IDLE] 데이터 분석 및 가공 (0) | 2022.05.10 |