David의 개발 이야기!

Matplotlib 에 대해 알아보자! 본문

인공지능공부

Matplotlib 에 대해 알아보자!

david.kim2028 2023. 7. 7. 16:59
반응형

0. Matplotlib 란?

- 다양한 데이터를 시각화할 수 있도록 도와주는 라이브러리

- 간단한 데이터 분석에서부터 인공지능 모델의 시각화까지 지원.

 

1. 간단한 직선 그래프 그리기

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [1, 2, 3]
plt.plot(x, y)
plt.title("My Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

 

2. 그래프 저장하기 - savefig()

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [1, 2, 3]
plt.plot(x, y)
plt.title("My Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.savefig('picture.png')

 

* 두개의 그래프를 저장하고 싶을때

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, np.pi * 10, 500) # PI * 10 너비에, 500개의 점을 균일하게 찍기
fig, axes = plt.subplots(2, 1) # 2개의 그래프가 들어가는 Figure 생성
axes[0].plot(x, np.sin(x)) # 첫 번째 그래프는 사인(Sin) 그래프
axes[1].plot(x, np.cos(x)) # 두 번째 그래프는 코사인(Cos) 그래프
fig.savefig("sin&cos.png")

3. 선그래프 그리기 1 - linestyle, marker 조정

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
y = x ** 2
# 라인 스타일로는 '-', ':', '-.', '--' 등이 사용될 수 있습니다.
plt.plot(x, y, linestyle=":", marker="*")
# X축 및 Y축에서 특정 범위를 자를 수도 있습니다.
plt.show()

 

3. 선그래프 그리기 2 - 여러개 그래프 한곳에 겹쳐서 그리기

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
y1 = x ** 2
y2 = -x
plt.plot(x, y1, linestyle="-.", marker="*", color="red", label="y = x * x")
plt.plot(x, y2, linestyle=":", marker="o", color="blue", label="y = -x")
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(
    shadow=True,
    borderpad=1
)
plt.show()

 

3. 선그래프 그리기 3 - markersize / markerfacecolor / markeredgecolor

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
y1 = x ** 2
plt.plot(
    x, y1,
    linestyle=":",
    marker="o",
    markersize=8,
    markerfacecolor="blue",
    markeredgecolor="red"
)
plt.show()

 

4. 막대그래프 그리기 

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-9, 10)
plt.bar(x, x ** 2)
plt.show()

 

5. 누적막대그래프 그리기 

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(10) # 아래 막대
y = np.random.rand(10) # 중간 막대
z = np.random.rand(10) # 위 막대
data = [x, y, z]
x_array = np.arange(10)
for i in range(0, 3): # 누적 막대의 종류가 3개
    plt.bar(
        x_array, # 0부터 10까지의 X 위치에서
        data[i], # 각 높이(10개)만큼 쌓음
        bottom=np.sum(data[:i], axis=0)
    )
plt.show()

  1. x_array = np.arange(10): 0부터 9까지의 정수를 가지는 배열 x_array를 생성합니다. 이는 NumPy의 arange() 함수를 사용하여 생성합니다.
  2. for i in range(0, 3):: 0부터 2까지 반복하는 for 루프를 실행합니다. 이는 누적 막대 그래프의 종류가 3개이기 때문입니다.
  3. plt.bar(x_array, data[i], bottom=np.sum(data[:i], axis=0)): bar() 함수를 사용하여 막대 그래프를 그립니다. x_array는 막대의 X 위치를 나타내고, data[i]는 해당 높이 값을 나타냅니다. bottom 매개변수는 이전 막대의 높이를 누적하여 현재 막대의 밑바닥 위치를 설정합니다. 따라서 np.sum(data[:i], axis=0)는 이전 막대들의 높이를 누적한 값을 나타냅니다.

 

6. Scatter 그래프 그리기

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(10)
y = np.random.rand(10)
colors = np.random.randint(0, 100, 10)
sizes = np.pi * 1000 * np.random.rand(10)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.7)
plt.show()

반응형
Comments