※ 해당 게시글은 파이썬과 인공지능을 공부하면서 사용한 기능을 정리한 내용입니다.
과학계산용 그래프를 그리는 대표적인 패키지로 맷플롯립(matplotlib)이 있습니다. matplotlib 패키지는 아래와 같이 임포트(import)하며, 관용적으로 'plt'라는 문자열로 줄여서 임포트합니다.
import matplotlib.pyplot as plt
추가로 한글을 사용하기 위해선 원하는 한글 글씨체 파일(.ttf)을 다운 받은 후 다음과 같이 임포트하면 된다.
import matplotlib.font_manager as fm
font = fm.FontProperties(fname='./NanumBarunGothic.ttf') # 글씨체 파일을 파이썬 파일(.py)과 같은 디렉터리에 저장한 경우
matplotlib(이하 plt)로 그래프를 그리는 순서와 코드는 다음과 같다.
1. plt로 구현할 그래프 종류 설정
1) scatter(): 산점도를 그리는 함수
plt.scatter(x축_변수, y축_변수, marker='', c='')
위와 같이 x축, y축 변수를 순서대로 적고, 그래프로 표시되는 각 점의 모양과 색깔까지 정할 수 있다. 따로 지정하지 않는다면 모양은 'o'(원), 색깔은 기본 10개의 색깔이 순서대로 지정되어 표시된다. 기본 색깔은 맨 아래 참고 링크에서 확인할 수 있다.
2) hist(): 값이 발생한 빈도를 그리는 함수
plt.hist('값 목록', alpha = 0.8) #매개변수 alpha는 그래프의 투명도를 의미.
값 목록을 입력으로 전달하면, 그 목록에서 알맞은 계급값에 따라 빈도수를 구해서 나타낸다. 직관적으로 보기 위해 여러 범례의 그래프를 한 번에 나타내는 경우가 많기 때문에 투명도를 낮춰서 나타내기도 한다.
3) bar(): 막대그래프를 그리는 함수
plt.bar(range('x축 범위'), 'y값')
2. 메서드
1) 레이블(x축, y축) 설정
plt.xlabel('x축 이름')
plt.ylabel('y축 이름')
2) imshow(): 넘파이 배열로 저장된 이미지를 그릴 수 있게 해주는 메서드. 이미지로 나타낼 넘파이 배열을 입력으로 받고, 흑백 이미지일 경우에는 cmap 매개변수를 'gray'로 지정. 흑백 반전일 경우, cmap 매개변수는 'gray_r'로 지정.
3) subplots(): 여러 개의 그래프를 배열처럼 쌓을 수 있도록 도와주는 메서드. 적절한 그래프의 크기와 그래프 배열의 값을 반환한다. 함수의 두 매개변수는 그래프를 쌓을 행과 열을 지정한다. figsize 매개변수를 통해 그래프의 크기도 지정할 수 있다.
fig, axs = plt.subplots(1, 2) #그래프를 쌓을 공간 지정. 크기가 1행, 2열
4) title(): 제목을 설정하는 메서드
plt.title('7월 인천 기온', fontproperties=font) # 표시되는 그래프의 제목을 설정. fontproperties는 한글을 사용하거나 원하는 글씨체가 있을 경우 사용하면 됨.
5) legend(): 범례를 설정하는 메서드
plt.legend(['apple', 'banana', 'orange']) #이와 같이 범례를 설정
6) xticks(), yticks(): x축, y축의 각 항목마다 들어갈 눈금에 텍스트를 입력하는 메서드
# 눈금으로 '7월 1일' ~ '7월 31일'까지 입력하고 싶을 경우
ticks = [f"7월 {date}일" for date in range(1, 32)]
plt.xticks(x, ticks, fontproperties=font, rotation='vertical') # x, rotation 생략 가능. fontproperties는 한글을 사용하려는 경우나, 원하는 글씨체가 있을 때 사용.
3. 그래프 출력
plt.show()
4. 참고
1) 그래프 기본 색깔
'지극히 개인적인 공부 노트 > 파이썬(Python)' 카테고리의 다른 글
[Python] 매우 기초적인 Python 크롤링하는 법(feat. 간단한 DB 설명) (0) | 2021.06.25 |
---|---|
[Python] 정규표현식 (0) | 2021.05.31 |
[Python] 넘파이(numpy)의 유용한 기능 정리 (0) | 2021.05.11 |
[Python] 자료 구조와 배열의 간단 개념 (0) | 2021.04.30 |
[Python] 파이썬 스타일 가이드, PEP 8 (0) | 2021.04.29 |