matplotlib 사용준비
기초에서는 Matplotlib의 서브 패키지인 pyplot을 주로 사용합니다. "plt"라는 명칭으로 알려져있습니다.
테스트용 데이터셋을 받기위해 seaborn 라이브러리를, 데이터를 다루기 위해 pandas를 같이 사용하도록 합니다. 서로 연동도 잘 되어 있습니다.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
일단 테스트 데이터를 로드해줍니다. seaborn 라이브러리에서 제공하는 "anscombe" 데이터를 사용해봅니다.
anscombe = sns.load_dataset("anscombe")
편의를 위해 구분자인 "dataset" 별로 데이터를 나눠서 저장해줍니다.
anscombe = sns.load_dataset("anscombe")
data1 = anscombe[anscombe["dataset"] == "I"]
data2 = anscombe[anscombe["dataset"] == "II"]
data3 = anscombe[anscombe["dataset"] == "III"]
data4 = anscombe[anscombe["dataset"] == "IV"]
matplotlib로 그래프 그릴 준비하기
일단 커다란 도화지를 그려두고 그 안에 몇 개의 그래프를 그려줄지 설정해줍니다.
# 도화지 준비
fig = plt.figure()
#메인 제목 설정
fig.suptitle("matplotlib")
"fig"라는 하나의 도화지 안에 몇 개의 그래프를 그려줄지 설정해줍니다. 2행 2열로 4개의 그래프를 만들어보겠습니다.
# 2행 2열의 그래프 공간 마련해주기
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
각각의 그래프에 제목을 부여할 수 있습니다. 그리고 글자가 겹치는 부분이 발생한다면 쉽게 해결할 수 있습니다.
#각 그래프에 이름 부여하기
ax1.set_title("Data1")
ax2.set_title("Data2")
ax3.set_title("Data3")
ax4.set_title("Data4")
#글자가 겹치는 부분 제거
fig.tight_layout()
matplotlib 그래프 그리기
먼저 점그래프인 scatter를 그려보겠습니다. 줄 수 있는 옵션값들이 엄청 많은데 일단 컬러(c)만 넣었습니다.
ax1.scatter(data1['x'], data1['y'], c = "b")
ax2.scatter(data2['x'], data2['y'], c = "b")
ax3.scatter(data3['x'], data3['y'], c = "b")
ax4.scatter(data4['x'], data4['y'], c = "b")
fig
같은 도화지에 그래프를 추가하면 겹쳐서 그려줍니다. 기본 선 그래프인 라인플롯(plot)을 그려봅니다.
ax1.plot(data1['x'], data1['y'], c = "r")
ax2.plot(data2['x'], data2['y'], c = "r")
ax3.plot(data3['x'], data3['y'], c = "r")
ax4.plot(data4['x'], data4['y'], c = "r")
fig
matplotlib 플롯 그래프 옵션
옵션값 | 설명 | ||
c | 선 색깔 (color) | b g r c m y k w |
blue green red cyan magenta yellow black white |
mec | 마커 선 색깔 (marker edge color) | ||
mew | 마커 선 굵기 (marker edge width) | ||
mfc | 마커 내부 색깔 (marker face color) | ||
lw | 선 굵기 (line width) | ||
ls | 선 스타일 (line style) | - -- -. : |
|
marker | 마커 종류 | . , o v ^ < > 1 2 3 4 s p * h H + x D d |
point marker pixel marker circle marker triangle_down marker triangle_up marker triangle_left marker triangle_right marker tri_down marker tri_up marker tri_left marker tri_right marke square marker pentagon marker star marker hexagon1 marker hexagon2 marker plus marker x marker diamond marker thin_diamond marker |
ms | 마커 크기 (marker size) |
위 옵션을 전부 사용해보면 아래와 같이 사용해 볼 수 있습니다.
pic = plt.figure()
ax = pic.add_subplot(1,1,1)
x = [10,20,30,40]
y = [1,3,9,21]
ax.plot(x, y, c="b", mec="g", mew=3, mfc="r",
lw=5, ls="--", marker="o", ms=10)
산점도(Scatter)의 경우도 아래와 같이 옵션을 줘서 가시성을 높일 수 있습니다.
#산점도
fig = plt.figure()
fig.suptitle("Test")
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel("x")
ax1.set_ylabel("y")
ax1.set_title("Scatter")
# 산점도 그리기 (c = 컬러, s = 점의 사이즈, alpha = 투명도)
ax1.scatter(tips["total_bill"], tips["tip"], c = tips["size"],
s = tips["size"] * 20, alpha = 0.5)
'파이썬 > 라이브러리(API)' 카테고리의 다른 글
판다스 데이터 누락값(결측치) 처리하기 (0) | 2024.03.07 |
---|---|
판다스 데이터프레임 합치기 (데이터프레임 병합) (1) | 2024.03.07 |
판다스 데이터프레임에서 조건문(if문)으로 데이터 넣기 (2) | 2024.03.07 |
파이썬 판다스 Pandas 기본 문법 및 기초 사용법 (4) | 2024.03.06 |
파이썬 Numpy 수치해석용 라이브러리 (3) | 2024.03.05 |
댓글