Programming,  Python

[Python] Graph 그리기 (Matplotlib)

Python에서 그래프를 그릴 때 가장 많이 사용하는 패키지로 Matplotlib이 있다.

%matplotlib inline # jupyter에서 사용하는 magic command로 notebook 내부에 그림을 표시하도록 지정
from matplotlib import pyplot as plt

plt.plot([1,2,3], [110,130,120])
plt.show()

1. Color, Marker, Line Style

그래프의 모습을 색, 점, 선 등의 스타일을 변경할 수 있다.

from matplotlib import pyplot as plt
import numpy as np
plt.plot(np.random.randn(30).cumsum(), color='k', linestyle='dashed', marker='o')

1-1. Color

CharacterColor
‘b’Blue
‘g’Green
‘r’Red
‘c’Cyan
‘m’Magenta
‘y’Yellow
‘k’Black
‘w’White

1-2. Marker

CharacterDescription
‘-‘1선
‘–‘Dash
‘-.’Dash-dot line
‘:’Dotted line

1-3. Line

CharacterDescription
‘.’Point marker
‘,’Pixel marker
‘o’Circle marker
‘v’Triangle down marker
‘^’Triangle up marker
‘<‘Triangle left marker
‘>’Triangle right marker
‘s’Square marker
‘p’Pentagon marker
‘*’Star marker
‘+’Plus marker
‘x’X marker
‘D’Diamond marker

2. Label

X, Y축 이름, 제목을 다음과 같이 붙일 수 있다.

plt.xlabel(["X축 이름"])
plt.ylabel(["Y축 이름"])
plt.title(["그래프 제목"])
from matplotlib import pyplot as plt

plt.plot(["Seoul", "Paris", "Beijing"], [30, 25, 55])
plt.xlabel('City')
plt.ylabel('Response')
plt.title('Experiment Result')
plt.show()

3. Legend (범례)

plt.legend(["X축 legend", "Y축 legend"])
from matplotlib import pyplot as plt

plt.plot([1, 2, 3], [1, 4, 9])
plt.plot([2, 3, 4], [5, 6, 7])
plt.xlabel('Time (secs)')
plt.ylabel('Output')
plt.title('Experiment Result')
plt.legend(['A', 'B'])
plt.show()

4. Figure 구조

  • Title: 제목
  • Grid: 보조선
  • Tick: 눈금
  • Legend: 범례
  • Label: 축 이름
  • Markers: 점
  • Line: 선
  • Axis: x축, y축에 대한 눈금과 lebel을 가짐
  • Axes: 그래프가 그려지는 좌표 평면으로 하나의 figure에 1개 이상의 axes가 존재 할 수 있음 (subplot)

5. 파일로 저장

활성화된 figure는 plt.savefig 메소드를 이용해서 파일로 저장 할 수 있다.

# plt.savefig("파일명", dpi=해상도, bbox_inches=주위 공백)
plt.savefig("figure.png", dpi=400, bbox_inches="tight") 

6. OOP Style vs. pyplot Style

따로 객체를 만들지 않고 plot을 그리는 방법은 다음과 같다.

x = np.linspace(0, 2, 100)

plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic')  # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()

반대로 plt object를 만들어서 그림과 축을 만드는 메서드를 호출하는 방법은 다음과 같다.

x = np.linspace(0, 2, 100)

# Note that even in the OO-style, we use `.pyplot.figure` to create the figure.
fig, ax = plt.subplots()  # Create a figure and an axes.
ax.plot(x, x, label='linear')  # Plot some data on the axes.
ax.plot(x, x**2, label='quadratic')  # Plot more data on the axes...
ax.plot(x, x**3, label='cubic')  # ... and some more.
ax.set_xlabel('x label')  # Add an x-label to the axes.
ax.set_ylabel('y label')  # Add a y-label to the axes.
ax.set_title("Simple Plot")  # Add a title to the axes.
ax.legend()  # Add a legend.

Reference

  • https://sosomemo.tistory.com/61

Leave a Reply

Your email address will not be published. Required fields are marked *