본문 바로가기
Robot/22년도 자율주행 테크니션 양성과정 일지록

[파이썬] DAY14 Numpy + Matplotlib 코드 분석

by 9루트 2022. 2. 7.

전체 코드

# matplotlib.pyplot을 plt로 import합니다
import matplotlib.pyplot as plt
import numpy as np
# 아나콘다에서 동작 가능
#%matplotlib inline


#x축 범위 - 다항함수 / 사인코사인 / 탄젠트
x_upper = np.linspace(0, 5)
x_lower = np.linspace(0, 2 * np.pi)
x_tan = np.linspace(-np.pi / 2, np.pi / 2)
#x축 좌표 - 다항함수 / 사인코사인 / 탄젠트
positions_upper = [i for i in range(5)]
positions_lower = [0, np.pi / 2, np.pi, np.pi * 3 / 2, np.pi * 2]
positions_tan = [-np.pi / 2, 0, np.pi / 2]
#x축 좌표에 대응되는 라벨 - 다항함수 / 사인코사인 / 탄젠트
labels_upper = [i for i in range(5)]
labels_lower = ["0°", "90°", "180°", "270°", "360°"]
labels_tan = ["-90°", "0°", "90°"]
#출력되는 가장 큰 틀, 너비와 높이 지정
fig = plt.figure(figsize=(9, 6))
#큰 틀 안의 나머지 6개 그래프 자리, 너비와 높이 지정
plt.subplots_adjust(wspace=0.4, hspace=0.4) # 하나씩 넣는다. 상단, 측면의 크기 설정

#-----------------------------------------------------------------------------
# 다항함수 구하기 y=x, y=x^2, y=x^3
for i in range(3):
    y_upper = x_upper ** (i + 1)
    # 2x6 자리 배치 중에 1,2,3번 자리에 놓겠다.(가로로 쭉 나열)
    ax = fig.add_subplot(2, 3, i + 1)
    # 격자 표시 하겠다.
    ax.grid(True)
    # 제목을 설정한다.???????????
    ax.set_title("$y=x^%i$" % (i + 1))
    ax.set_xlabel("x-axis")
    ax.set_ylabel("y-axis")
    # 좌표를 설정하고 각각 라벨을 붙이겠다. 5개
    ax.set_xticks(positions_upper)
    ax.set_xticklabels(labels_upper)
    # 다항함수 그리기
    ax.plot(x_upper, y_upper)

#-----------------------------------------------------------------------------
# 사인 코사인 그래프
y_lower_list = [np.sin(x_lower), np.cos(x_lower)]
title_list = ["$y=sin(x)$", "$y=cos(x)$"]
for i in range(2):
    # 사인과 코사인 그래프를 동시에 그리겠다.
    y_lower = y_lower_list[i]
    # 2x6 자리 배치 중에 4,5번 자리에 놓겠다.(가로로 쭉 나열)
    ax = fig.add_subplot(2, 3, i + 4)
    ax.grid(True)
    # 제목도 리스트에 저장된 대로 놓겠다.
    ax.set_title(title_list[i])

    ax.set_xlabel("x-axis")
    ax.set_ylabel("y-axis")

    ax.set_xticks(positions_lower)
    ax.set_xticklabels(labels_lower)

    ax.plot(x_lower, y_lower)

#-----------------------------------------------------------------------------
# 탄젠트 그래프
ax = fig.add_subplot(2, 3, 6)
ax.grid(True)

ax.set_title("$y=tan(x)$")
ax.set_xlabel("x-axis")
ax.set_ylabel("y-axis")
ax.set_xticks(positions_tan)
ax.set_xticklabels(labels_tan)
# y값이 무한하게 커지고 작아지므로 범위를 설정해준다.
ax.set_ylim(-1, 1)

ax.plot(x_tan, np.tan(x_tan))

plt.show()

 

1. 다항함수 구현하기

# 제목을 설정한다.
ax.set_title("$y=x^%i$" % (i + 1))

2. 사인 코사인 그래프 그리기

#x축 좌표 - 다항함수 / 사인코사인 / 탄젠트
positions_upper = [i for i in range(5)]
positions_lower = [0, np.pi / 2, np.pi, np.pi * 3 / 2, np.pi * 2]
positions_tan = [-np.pi / 2, 0, np.pi / 2]
#x축 좌표에 대응되는 라벨 - 다항함수 / 사인코사인 / 탄젠트
labels_upper = [i for i in range(5)]
labels_lower = ["0°", "90°", "180°", "270°", "360°"]
labels_tan = ["-90°", "0°", "90°"]

 

# 좌표를 설정하고 각각 라벨을 붙이겠다. 5개
ax.set_xticks(positions_upper)
ax.set_xticklabels(labels_upper)

탄젠트 그래프 구현시 y축 범위 설정

# y값이 무한하게 커지고 작아지므로 범위를 설정해준다.
ax.set_ylim(-1, 1)