본문 바로가기
머신러닝/개념익히기

3차 함수 그래프 그리기

by ADELA_J 2023. 5. 9.
- f(x) = (x-2)x(x+2) 그래프 그려보기

 

  1. 일단 함수 f(x) 를 정의해봄

import numpy as np
import matplotlib.pyplot as plt

# 3차함수 그리기
def f(x):
    return (x-2) * x * (x+2)

 

그리고 매개변수 값을 주고 그에 대한 값을 바로 array를 써서 행렬, 벡터로 만들어주기. 

   ▼ 리스트 그대로 쓰면 리스트 하나가 통째로 들어가서 안되고. 배열로 만들어줘야함.

   ▼ 벡터, 행렬은 하나씩 요소가 실행되는 성질이 있기 때문에 하나씩 값을 넣어줌.

print(f(np.array([1,2,3])))

▼ 그래서 이렇게 그래프를 그려봐도됨

▼ 인수가 x축값(a), 출력값이 y축값(b)

a = np.arange(-10,11)
b = f(a)
plt.plot(a,b)
plt.show()

2. 그래프 범위를 결정하기

  - np.arnage(low, high, step)으로 하면 좋긴하지만 그래프는 

  - linespace(low, high, n개의 구간) 이 훨씬 더 편하다.

    ▶high 값까지 포함되어서 n개의 구간으로 나눠서 값을 출력해줌

 

x = np.arange(-3, 3.5, 0.5)
print(x)

y = np.linspace(-3,3,10)
print(np.round(y,2))

3. 그래서 그래프를 그려보면...

 ▼ np.linspace(-3,3,100) 에서 구간을 100으로 분할하면 그래프가 좀 더 부드러운 곡선을 나타냄

 ▼ 그래프를 그리기 위해서는 배열을 벡터 형식으로 값이 나와야함.

 ▽ label과 title의 문자열은 '$'로 묶어 보기 좋은 Tex 기반 수식으로 지정할 수 있음(좀 더 전문가 스러운..ㅎㅋㅎ)

import numpy as np
import matplotlib.pyplot as plt

def f2(x, w):
    return (x-w) * x * (x+2)

x = np.linspace(-3, 3, 100)     #-3부터 3까지 100개 구간으로 쪼갬
plt.plot(x, f2(x,2), color='salmon', label='$w=2$')   #계수2
plt.plot(x, f2(x,1), color='cornflowerblue', label='$w=1$')  #계수1
plt.legend(loc="upper left")    #(E) 범례표시
plt.ylim (-15, 15)      #(F) y축의 범위
plt.title('$f_(x)$')       #(G)제목
plt.xlabel('x')       #x라벨
plt.ylabel('$y$')       #y라벨
plt.grid(True)       
plt.show()

4. 그래프 여러개 보여주려면 

  - plt.subplot(세로갯수n, 가로갯수n2, n 번째) > 왼쪽 위부터 1, 그 옆 2 (0이아니라 1부터 시작)

  ▼ plt.subplots_adjust(wspace=w, hspace=h)로 조절 가능. w 좌우간격 h 상하간격

import numpy as np
import matplotlib.pyplot as plt

def f2(x, w):
    return (x-w) * x * (x+2)
    
x = np.linspace(-3, 3, 100) 

plt.figure(figsize=(10,3))   #figure 지정
plt.subplots_adjust(wspace=0.5, hspace=0.5) #그래프의 간격을 지정
for i in range(6):
    plt.subplot(2,3,i +1)  #그래프 묘사의 위치 지정
    plt.title (i+1)
    plt.plot (x,f2(x,i),'olivedrab')
    plt.ylim(-20,20)
    plt.grid(True)
plt.show()

 

 

****번외 : 그래프에 사용하는 컬러 이름 목록 보여줌! color="색이름"을 사용해 적으면됨.

import matplotlib
matplotlib.colors.cnames

'머신러닝 > 개념익히기' 카테고리의 다른 글

지수함수와 로그함수  (0) 2023.05.16
행렬  (0) 2023.05.16
머신러닝에 필요한 수학 기본 - 합 / 곱 / 미분  (0) 2023.05.15
벡터와 연산  (0) 2023.05.10
3차원 그래프 그리기  (0) 2023.05.09