코딩항해기
[Python] 데이터 시각화하기 (pyplot) 본문
matplolib 라이브러리에 있는 pyplot 모듈을 활용해 데이터 시각화 작업을 진행한다.
matplolib 라이브러리 다운로드
matplolib는 외부 라이브러리이므로 다운로드가 필요하다. cmd창에서 install 명령어를 통해 다운로드 할 수 있다.
pip install matplotlib
shell에서 import만 넣고 실행해봤을 때 오류가 나지 않는다면 이미 설치된 상태라는 것을 확인 할 수 있다.
확인이 완료됐다면 사용할 곳 상단에 import를 작성한다.
import matplotlib.pyplot as plt #별칭 plt로 지정
이제 pyplot(이하 plt)를 사용해 그래프를 그릴 준비가 완료됐다.
pyplot 기본 사용
plt를 통해 선(plot)이나 막대(bar) 그래프를 그리기 위해 넣는 데이터는 list타입이어야한다. 필요한 list(x,y)데이터 2개를 먼저 생성한다. 이후 plot나 bar에 리스트를 x,y순서대로 넣고 show로 실행하면 데이터가 시각화되어 뜬다.
import csv
import matplotlib.pyplot as plt #별칭
file_path = 'test.csv'
#표 생성 시 사용할 list
datas = []
temps = []
with open (file_path, mode='r') as file :
reader = csv.reader(file)
header = next(reader)
for row in reader :
#일부컬럼추출
a = row[2]
b = row[-2]
if a.startswith('Dec') : #12월만
datas.append(a) #사용할 데이터 담기
temps.append(float(b)) #사용할 데이터 담기
plt.bar(datas, temps) #막대 그래프
plt.title('Dec Temperature', fontsize='15') #표 제목설정
plt.xlabel('Date', fontsize='10') #X축 설명
plt.ylabel('Temp', fontsize='10') #Y축 설명
plt.show() #실행
(제목, x,y축 설명 생략가능하다.)
(-라서 막대 그래프가 아래를 향하고 있다. 뒤집는 설정도 존재한다.)
선 그래프로 바꾸면 아래와 같이 된다.
import csv
import matplotlib.pyplot as plt #별칭
file_path = 'test.csv'
#표 생성 시 사용할 list
datas = []
temps = []
with open (file_path, mode='r') as file :
reader = csv.reader(file)
header = next(reader)
for row in reader :
#일부컬럼추출
a = row[2]
b = row[-2]
if a.startswith('Dec') : #12월만
datas.append(a) #사용할 데이터 담기
temps.append(float(b)) #사용할 데이터 담기
plt.plot(datas, temps) #선 그래프
plt.title('Dec Temperature', fontsize='15') #표 제목설정
plt.xlabel('Date', fontsize='10') #X축 설명
plt.ylabel('Temp', fontsize='10') #Y축 설명
plt.show() #실행
pyplot 함수 및 속성 종합 정리
공식 사이트
그래프 생성 및 기본 설정 함수
plt.figure() | 새로운 그래프 창 생성 | plt.figure(figsize=(10,6)) |
plt.subplot() | 여러 개의 서브플롯 생성 | plt.subplot(2,2,1) |
plt.title() | 그래프 제목 설정 | plt.title('제목') |
plt.xlabel() | x축 레이블 설정 | plt.xlabel('X 축') |
plt.ylabel() | y축 레이블 설정 | plt.ylabel('Y 축') |
plt.grid() | 그리드 표시 | plt.grid(True) |
plt.legend() | 범례 표시 | plt.legend(['데이터1']) |
플롯 종류별 함수
plt.plot() | 선 그래프 | plt.plot(x, y) |
plt.scatter() | 산점도 | plt.scatter(x, y) |
plt.bar() | 막대 그래프 | plt.bar(x, height) |
plt.hist() | 히스토그램 | plt.hist(data, bins=50) |
plt.boxplot() | 박스 플롯 | plt.boxplot(data) |
plt.pie() | 파이 차트 | plt.pie(sizes) |
plt.imshow() | 이미지/행렬 표시 | plt.imshow(matrix) |
축 관련 함수
plt.xlim() | x축 범위 설정 | plt.xlim(0, 10) |
plt.ylim() | y축 범위 설정 | plt.ylim(-5, 5) |
plt.xticks() | x축 눈금 설정 | plt.xticks([0,5,10]) |
plt.yticks() | y축 눈금 설정 | plt.yticks([0,2,4,6]) |
plt.axis() | 축 범위 설정 | plt.axis('equal') |
스타일 및 색상 관련
plt.style.use() | 스타일 설정 | plt.style.use('seaborn') |
plt.colormap() | 컬러맵 설정 | plt.colormap('viridis') |
plt.color() | 색상 설정 | plt.plot(x, y, color='red') |
plt.alpha | 투명도 설정 | plt.plot(x, y, alpha=0.5) |
저장 및 표시
plt.savefig() | 그래프 저장 | plt.savefig('graph.png') |
plt.show() | 그래프 표시 | plt.show() |
plt.close() | 그래프 창 닫기 | plt.close() |
텍스트 및 주석
plt.text() | 텍스트 추가 | plt.text(x, y, '텍스트') |
plt.annotate() | 주석 추가 | plt.annotate('설명', xy=(x,y)) |
plt.figtext() | 그림 전체에 텍스트 추가 | plt.figtext(0.5, 0.5, '내용') |
주요 속성 설정
linewidth | 선 두께 | plt.plot(x, y, linewidth=2) |
linestyle | 선 스타일 | plt.plot(x, y, linestyle='--') |
marker | 마커 스타일 | plt.plot(x, y, marker='o') |
markersize | 마커 크기 | plt.plot(x, y, markersize=10) |
fontsize | 글자 크기 | plt.title('제목', fontsize=14) |
더보기
선 스타일 (Line Style) 속성
linestyle 또는 ls | - | 실선 | plt.plot(x, y, linestyle='-') |
-- | 파선 | plt.plot(x, y, ls='--') | |
-. | 점선과 파선의 조합 | plt.plot(x, y, ls='-.)` | |
: | 점선 | plt.plot(x, y, ls=':') | |
linewidth 또는 lw | 숫자 | 선의 두께 (포인트 단위) | plt.plot(x, y, lw=2.5) |
마커 (Marker) 속성
marker | 'o' | 원형 마커 | plt.plot(x, y, marker='o') |
's' | 사각형 마커 | plt.plot(x, y, marker='s') | |
'^' | 삼각형 마커 | plt.plot(x, y, marker='^') | |
'+' | 플러스 마커 | plt.plot(x, y, marker='+') | |
markersize 또는 ms | 숫자 | 마커의 크기 | plt.plot(x, y, marker='o', ms=10) |
markerfacecolor 또는 mfc | 색상값 | 마커 내부 색상 | plt.plot(x, y, marker='o', mfc='red') |
markeredgecolor 또는 mec | 색상값 | 마커 테두리 색상 | plt.plot(x, y, marker='o', mec='black') |
markeredgewidth 또는 mew | 숫자 | 마커 테두리 두께 | plt.plot(x, y, marker='o', mew=2) |
폰트 및 텍스트 속성
fontsize | 숫자 또는 문자열 | 글자 크기 | plt.title('제목', fontsize=14) |
plt.title('제목', fontsize='large') | |||
fontweight | 문자열 또는 숫자 | 글자 굵기 | plt.xlabel('X축', fontweight='bold') |
plt.xlabel('X축', fontweight=700) | |||
fontfamily | 문자열 | 폰트 종류 | plt.title('제목', fontfamily='serif') |
rotation | 숫자 | 텍스트 회전 각도 | plt.xticks(rotation=45) |
색상 및 투명도 속성
color 또는 c | 색상명 | 기본 색상명 | plt.plot(x, y, color='red') |
RGB 튜플 | RGB 값 (0~1) | plt.plot(x, y, c=(0.2, 0.4, 0.6)) | |
16진수 코드 | HEX 컬러 코드 | plt.plot(x, y, c='#FF0000') | |
alpha | 0~1 사이 실수 | 투명도 | plt.plot(x, y, alpha=0.5) |
그래프 영역 속성
figsize | (가로, 세로) | 그래프 크기 (인치) | plt.figure(figsize=(10, 6)) |
dpi | 숫자 | 해상도 | plt.figure(dpi=300) |
facecolor | 색상값 | 배경 색상 | plt.figure(facecolor='lightgray') |
그리드 속성
grid | True/False | 그리드 표시 여부 | plt.grid(True) |
grid.axis | 'both', 'x', 'y' | 그리드 적용 축 | plt.grid(True, axis='both') |
grid.linestyle | 선 스타일 | 그리드 선 스타일 | plt.grid(True, linestyle='--') |
grid.alpha | 0~1 사이 실수 | 그리드 투명도 | plt.grid(True, alpha=0.5) |
축 속성 제어를 위한 복합 예제
plt.plot(x, y,
color='blue', # 선 색상
linewidth=2, # 선 두께
linestyle='--', # 선 스타일
marker='o', # 마커 종류
markersize=8, # 마커 크기
markerfacecolor='red', # 마커 내부 색상
markeredgecolor='black', # 마커 테두리 색상
markeredgewidth=1.5, # 마커 테두리 두께
alpha=0.7) # 전체 투명도
자주 사용되는 스타일 문자열
'b' | 파란색 |
'g' | 초록색 |
'r' | 빨간색 |
'k' | 검은색 |
'-' | 실선 |
'--' | 파선 |
':' | 점선 |
'o' | 원형 마커 |
's' | 사각형 마커 |
'^' | 삼각형 마커 |
참고 하기 좋은 블로그 글 : https://greeksharifa.github.io/references/2023/05/12/matplotlib-usage/#%EC%84%A0-%EA%B7%B8%EB%9E%98%ED%94%84plot
'Python' 카테고리의 다른 글
[Python] NumPy (np) (1) | 2024.11.27 |
---|---|
[Python] CSV 파일 데이터 불러오기 (0) | 2024.11.25 |
[Python] 파이썬 자료형 (0) | 2024.11.20 |
[Python] 파이썬 Python 이해 (0) | 2024.11.20 |