티스토리 뷰
1️⃣ Matplotlib 소개
파이썬에서 데이터를 그래프나 차트로 시각화할 수 있는 라이브러리
그래프 그려보기
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
plt.plot(x, y)
그래프 제목, 라벨 작성하기
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
plt.plot(x, y)
plt.title("First Plot")
plt.xlabel("x")
plt.ylabel("y")
subplots
- 보통 여러 개의 그래프를 그릴 때 사용한다.
- figure와 axes를 직접 생성한다.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("First Plot")
ax.set_xlabel("x")
ax.set_ylabel("y")
Matplotlib 구조
그래프 저장하기
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("First Plot")
ax.set_xlabel("x")
ax.set_ylabel("y")
fig.set_dip(300)
fig.savefig("first_plot.png")
여러 개의 그래프 그리기
x = np.linspace(0, np.pi*4, 100)
fig, axes = plt.subplots(2, 1)
axes[0].plot(x, np.sin(x))
axes[1].plot(x, np.cos(x))
2️⃣ Matplotlib 그래프
Line plot
fig, ax = plt.subplots()
x = np.arange(15)
y = x ** 2
ax.plot(
x, y,
linestyle=":",
marker="*",
color="#524FA1"
)
- Line style
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, linestyle="-") # solid
ax.plot(x, x+2, linestyle="--") # dashed
ax.plot(x, x+4, linestyle="-.") # dashdot
ax.plot(x, x+6, linestyle=":") # dotted
- Color
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, color="r")
ax.plot(x, x+2, color="green")
ax.plot(x, x+4, color='0.8')
ax.plot(x, x+6, color="#524FA1")
- Marker
x = np.arange(10)
fig, ax = plt.subplots()
ax.plot(x, x, marker=".") # 점
ax.plot(x, x+2, marker="o") # 원
ax.plot(x, x+4, marker='v') # 삼각형
ax.plot(x, x+6, marker="s") # 사각형
ax.plot(x, x+8, marker="*") # 별
기호 | 의미 | 기호 | 의미 |
. | 점 | , | 픽셀 |
o | 원 | s | 사각형 |
v, <, ^, > | 삼각형 | 1, 2, 3, 4 | 삼각선 |
p | 오각형 | H, h | 육각형 |
- 축 경계 조정하기 (x축 시작-끝, y축 시작-끝)
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x))
ax.set_xlim(-2, 12)
ax.set_ylim(-1.5, 1.5)
- 범례
fig, ax = plt.subplots()
ax.plot(x, x, label='y=x')
ax.plot(x, x**2, label='y=x^2')
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend(
loc='upper right',
shadow=True,
fancybox=True,
borderpad=2
)
3️⃣ Scatter (산점도)
- 값 사이의 관계를 파악하기 용이해지고 데이터 셋에서 이상값을 찾기도 용이하다.
- 둘 이상의 측정값의 상관 관계를 파악하고 시각화 할 수 있다.
fig, ax = plt.subplots()
x = np.arange(10)
ax.plot(
x, x**2, "o",
markersize=15,
markerfacecolor='white',
markeredgecolor="blue"
)
- 사이즈, 컬러 옵션
fig, ax = plt.subplots()
x = np.random.randn(50)
y = np.random.randn(50)
colors = np.random.randint(0, 100, 50)
sizes = 500 * np.pi * np.random.rand(50) ** 2
ax.scatter(x, y, c=colors, s=sizes, alpha=0.3)
4️⃣ Bar & Histogram
- 여러 값을 비교하는데 적합하다.
- 여러개의 값을 입력 받고 그 값들을 한눈에 비교 할 수 있다.
x = np.arange(10)
fig, ax = plt.subplots(figsize=(12, 4))
ax.bar(x, x*2)
- 누적된 막대그래프 그리기
x = np.random.rand(3)
y = np.random.rand(3)
z = np.random.rand(3)
data = [x, y, z]
fig, ax = plt.subplots()
x_ax = np.arange(3)
for i in x_ax:
ax.bar(x_ax, data[i],
bottom=np.sum(data[:i], axis=0))
ax.set_xticks(x_ax)
ax.set_xticklabels(["A", "B", "C"])
Histogram
일정 시간 동안의 숫자 데이터 분포를 시각화 하는데 적합하다.
fig, ax = plt.subplots()
data = np.random.randn(1000)
ax.hist(data, bins=50)
💡 matplotlib 의 pyplot으로 그래프를 그릴 때 기본 폰트는 한글을 지원하지 않는다.
아래와 같이 한글 지원 폰트로 직접 바꾸어주면 한글을 사용할 수 있다.
import matplotlib.font_manager as fm
fname='./NanumBarunGothic.ttf'
font = fm.FontProperties(fname = fname).get_name()
plt.rcParams["font.family"] = font
5️⃣ Matplotlib with Pandas
예시1) line plot
df = pd.read_csv("./president_heights.csv")
fig, ax = plt.subplots()
ax.plot(df["order"], df["height(cm)"], label="height")
ax.set_xlabel("order")
ax.set_ylabel("height(cm)")
예시2) scatter
fire = df[(df['Type 1']=='Fire') | ((df['Type 2'])=="Fire")]
water = df[(df['Type 1']=='Water') | ((df['Type 2'])=="Water")]
fig, ax = plt.subplots()
ax.scatter(fire['Attack'], fire['Defense’], color='R', label='Fire', marker="*", s=50)
ax.scatter(water['Attack'], water['Defense’], color='B', label="Water", s=25)
ax.set_xlabel("Attack")
ax.set_ylabel("Defense")
ax.legend(loc="upper right")
이 글은 엘리스의 AI트랙 5기 강의를 들으며 정리한 내용입니다.
'개발공부 > 🎅 Python' 카테고리의 다른 글
[Python] 데이터 분석 프로젝트 가이드 (0) | 2022.09.29 |
---|---|
[Python] Pandas 심화 알아보기 (0) | 2022.09.27 |
[Python] Pandas 기본 알아보기 (0) | 2022.09.27 |
[Python] NumPy 사용해보기 (0) | 2022.09.24 |
[Python] TED 강연을 통해 접해 보는 복잡한 형태의 데이터 (0) | 2022.09.23 |
프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그