개발일기

Python - Matplotlib 그래프의 기초 본문

프로그래밍 언어/Python

Python - Matplotlib 그래프의 기초

Flashback 2023. 12. 22. 15:38
728x90
반응형

Matplotlib

matplotlib은 데이터를 선, 막대, 원형 그래프 등의 모양으로 시각화할 수 있게하는 파이썬 라이브러리다.

 

1. matplotlib의 기본 파라미터 및 그래프 출력

  • figure() : 그림 객체를 생성하기 위해 사용하는 함수이다. 그림을 그릴때 자동적으로 호출해주지만 여러개의 그림을 동시에 그리거나 각각의 그림에 크기, 해상도 등을 다르게 구성하고 싶을 때는, figure()를 사용하여 각각의 그림 객체를 생성해야한다. figure에 매개변수들을 추가하여 그래프의 모습을 변경할 수 있다.
  • num: 그래프의 인덱스 번호를 지정
  • figsize: 그래프의 가로 세로 크기를 지정(단위는 인치)
  • facecolor: 그래프 바깥의 배경색을 지정(기본은 흰색)
  • dpi: 해상도(기본 100dpi)
  • plot(): x축과 y축에 해당하는 값을 지정한다. x축을 생략하고 y축의 값만 입력하면 x축은 자동으로 생성된다.
import matplotlib.pyplot as plt

plt.figure(num=1, figsize=(3.2, 1.8), facecolor="grey", dpi=150)# figure 설정
plt.plot([1, 2, 3]) # y축 값을 1, 2, 3으로 가정하고 x축값은 자동으로 생성
plt.show() # 화면에 그래프 표시

matplotlib의 기본 그래프

 

 

figure에 추가된 매개변수를 바탕으로 그려진 그래프를 확인할 수 있다. x축이 자동으로 생성될 때는, y = x + 1 형식의 그래프가 생성된다.

import matplotlib.pyplot as plt

plt.plot([1, 2, 3]) # y축값이 1, 2, 3으로 가정하고 x축값은 자동 생성
plt.plot([1, 2, 3], [4, 5, 6]) # x축값은 1, 2, 3 / y축값은 4, 5, 6
plt.show()

y = x + 1 형식의 그래프

 

2. 그래프 스타일 수정

plot() 함수 파라미터에 선의 모양, 색상, 마커에 대한 정보를 추가하면 모양을 변경할 수 있다. 정해진 순서는 없으며 필요에 따라 추가 및 생략이 가능하다.

import matplotlib.pyplot as plt

plt.plot([1, 2, 3]) # y축값이 1, 2, 3으로 가정하고 x축값은 자동 생성
plt.plot([1, 2, 3], [4, 5, 6], 'go--') # x축값은 1, 2, 3 / y축값은 4, 5, 6
plt.show()

입력가능한 색상, 마커, 선 모양은 https://matplotlib.org/1.5.3/api/pyplot_api.html#matplotlib.pyplot.plot 이 페이지에서 확인이 가능하다.

그래프 스타일 수정

 

3. 축 범위 지정

  • axis(): 각 축의 범위를 지정한다.
import matplotlib.pyplot as plt

plt.plot([0, 2, 3], [0, 5, 6])
plt.axis([0, 3, 0, 8])
# [x축의 최소값, x축의 최대값, y축의 최소값, y축의 최대값]

plt.show()

axis는 plot과 동일하게 x축 y축 순으로 값이 지정된다. 위와같이 설정 후 그래프를 생성하면 x축은 0~3, y축은 0~8까지로 그래프 범위가 설정된다.

축 범위 지정

 

4. 범례 표시

  • legend(): 그래프의 범례를 표시한다.
  • loc: 범례의 위치를 지정한다.
import matplotlib.pyplot as plt

plt.plot([0, 2, 3], [0, 5, 6], label='sample1')
plt.axis([0, 3, 0, 8])
# [x축의 최소값, x축의 최대값, y축의 최소값, y축의 최대값]

plt.legend()
plt.show()
'best' (Axes only) 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10
plt.legend(loc=2)
plt.legend(loc='upper left')
# Location Code와 Location String값을 추가하여 위치를 지정하며 결과는 동일하다. 

범례 표시

 

5. 레이블 및 타이틀 이름 지정

  • xlabel(name): x축의 레이블명을 지정한다
  • ylabel(name): y축의 레이블명을 지정한다.
import matplotlib.pyplot as plt

plt.plot([0, 2, 3], [0, 5, 6], label='sample1')
plt.axis([0, 3, 0, 8])
plt.xlabel("X-Axis") # x축 레이블
plt.ylabel("Y-Axis") # y축 레이블

plt.legend()
plt.show()

 

  • title(name): 그래프의 타이틀명을 지정한다.
plt.title("Sample Graph1")

 

  • grid(bool): 격자 표시 여부를 지정한다. True / False를 넣을 수 있으며 매개변수를 생략하면 True로 인식하여 격자를 표시한다.
plt.grid() # 격자 표시
plt.grid(True) # 격자 표시
plt.grid(False) # 격자 표시안함

각 축의 레이블명, 범례, 그래프 타이틀, 격자

 

6. 2차 함수 그래프

numpy를 사용하여 50개의 x축 데이터를 생성한 후, y = x** + 1로 하는 2차 함수 그래프를 생성할 수 있다. x**는 x의 2제곱을 의미한다.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 50)
y = x**2 + 1

plt.plot(x, y)
plt.show()

 

7. 여러개의 그래프 추가

  • subplot(row, col, index): 지정한, 행, 열의 수에 따라 그래프를 생성하여 배치한다.

말로 보면 어려운데 행열에 따라 생성된 공간안에 여러개의 그래프를 배치할 수 있도록 하는 함수이다.

import matplotlib.pyplot as plt

# 3x2행렬
plt.subplot(3, 2, 1) # 인덱스1
plt.subplot(3, 2, 6) # 인덱스 6

plt.show()

입력된 row, col에 따라 행렬이 달라진다. 위와같이 하면 3x2행렬이 만들어진다.

인덱스에 따른 여러 그래프 추가

 

index1 index2
index3 index4
index5 index6

 

행렬의 인덱스는 1부터 시작한다. subplot으로 1, 6인덱스에 그래프를 표시하도록 지정하면 해당 위치에 그래프가 생성된다.

 


참고 사이트:

https://stackoverflow.com/questions/13359951/is-there-a-list-of-line-styles-in-matplotlib

 

Is there a list of line styles in matplotlib?

I'm writing a script that will do some plotting. I want it to plot several data series, each with its unique line style (not color). I can easily iterate through a list, but is there such a list al...

stackoverflow.com

 

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

 

matplotlib.pyplot.legend — Matplotlib 3.8.2 documentation

Place a legend on the Axes. The call signatures correspond to the following different ways to use this method: 1. Automatic detection of elements to be shown in the legend The elements to be added to the legend are automatically determined, when you do not

matplotlib.org

 

https://matplotlib.org/stable/users/explain/quick_start.html

 

Quick start guide — Matplotlib 3.8.2 documentation

Axes labels and text set_xlabel, set_ylabel, and set_title are used to add text in the indicated locations (see Text in Matplotlib for more discussion). Text can also be directly added to plots using text: mu, sigma = 115, 15 x = mu + sigma * np.random.ran

matplotlib.org

728x90
반응형
Comments