카테고리 없음

파이썬으로 그래프를 그려보자.

Scalarr 2023. 8. 31. 21:05

수식화된 것들에 대해서는 지오지브라, 데스모스 등의 프로그램으로 간단하게 그래프를 그릴 수 있지만, 관계를 알지 못하는 것들, 예를 들어 실험 데이터 같은 것들은 그래프를 그리기가 매우 힘들다. 일일이 좌표평면에 점을 찍을 수는 없는 노릇. 이럴 때는 컴퓨터의 힘을 빌리면 점을 찍지 않아도 된다.

 

1. 파이썬의 라이브러리

-Matplotlib

Matplotlib는 데이터의 시각화를 위해 가장 널리 사용되는 라이브러리 중 하나이다. 그래프, 히스토그램, 3D 그래프 등 다양한 기능을 지원한다.

 

-NumPy

NumPy는 "Numerical Python"의 약자로, 계산을 보다 효율적으로 수행하기 위해 개발된 라이브러리이다. 다차원 배열을 다루는 도구와 배열 연산을 위한 함수를 제공해 데이터 처리와 분석 작업을 쉽게 수행할 수 있게 해준다.

 

-SciPy

SciPy는 "Scientific Python"의 약자로, 파이썬의 과학적 계산을 위한 다양한 기능을 제공한다. NumPy를 기반을 만들어졌으며, 최적화 알고리즘을 이용한 함수의 최적화, 통계 분석, 신호 처리, 영상 처리등 유용한 기능들을 제공한다.

 

-pandas

pandas는 데이터 과학 분야에서 가장 인기 있는 라이브러리 중 하나로, 데이터를 구조화하고 분석하기 위한 다양한 도구와 기능을 제공한다. 데이터 조작, 필터링, 결합, 그룹화, 시각화 등의 기능을 제공한다.

 

2. 사용법

위 라이브러리들을 사용하기 위해서는 먼저 설치가 필요하다. 아래의 명령을 통해 설치할 수 있다.

pip install matplotlib

pip install numpy

pip install scipy

pip install pandas

 

3. 예제

-리스트 출력하기

import matplotlib.pyplot as plt //matplotlib를 plt로 사용 가능하다

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y)

 

-그래프 그리기

import numpy as np
import matplotlib.pyplot as plt

def z(n):
  #균일한 간격의 t값 만들기
  t = np.linspace(-np.pi, np.pi, 1000)
  c = 0.25 * n
  for n in range(1,n+1):
      c = c - (-1) ** n * np.exp(1j * n * t) / (2 * n)
  return c.view('(2,)float').T

plt.plot( *z(2), *z(3), *z(4), *z(5), *z(6), '-', lw=3 )
plt.axis('scaled')
plt.show()

-탄젠트 2x 그리기

import matplotlib.pyplot as plt
import numpy as np
#균일한 간격의 a값 만들기
a=np.linspace(0,100,1000000)
 
#탄젠트 합 공식
b=(2*np.tan(a))/(1-np.tan(a)**2)
#격자 표시
plt.grid(True)
 
#탄젠트 함수의 그래프는 불연속인 부분이 있으므로 산점도로 그려봄(s는 점의 크기, tan2x라고 이름 붙임)
plt.scatter(a,b,s=1,label='tan2x')
 
#x축, y축 이름 표기
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
 
#x값, y값 제한 만들기
plt.ylim(ymin=-100, ymax=100)
plt.xlim(xmax=5, xmin=0)
 
#범례 표시
plt.legend()

pandas 이용하기

pd.read_excel(io=' ', sheet_name = ' ', sheet_name=' ', usecols' ', skiprows= , nrows= )

io: 파일명

sheet_name: 엑셀 파일 왼쪽 아래usecols: 사용할 열skiprows: 건너뛸 행 개수nrows: 읽을 행 개수

 

-장동 운동에 대한 그래프

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

x_1 = pd.read_excel(io='result.xlsx', sheet_name='100 장동', usecols='p', skiprows=4, nrows=300)
y_1 = pd.read_excel(io='result.xlsx', sheet_name='100 장동', usecols='q', skiprows=4, nrows=300)

plt.plot(x_1, y_1, 'ro-')
plt.grid(True)
plt.xlabel('rotation (rad)')
plt.ylabel('tilt (rad)')

 

-여러 개 그리기

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

x_1 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='b', skiprows=4, nrows=30)
y_1 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='c', skiprows=4, nrows=30)

x_2 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='f', skiprows=4, nrows=30)
y_2 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='g', skiprows=4, nrows=30)

x_3 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='j', skiprows=4, nrows=30)
y_3 = pd.read_excel(io='result3.xlsx', sheet_name='Sheet1', usecols='k', skiprows=4, nrows=30)
#ro-, go-, bo- 에서 r,g,b는 색상을 나타내고, o-는 점을 찍어서 잇는 것
plt.plot(x_1, y_1,'ro-', label = 'Experiment 1')
plt.plot(x_2, y_2,'go-', label = 'Experiment 2')
plt.plot(x_3, y_3,'bo-', label = 'Experiment 3')
plt.grid(True)
plt.legend()
plt.xlabel('x (m)')
plt.ylabel('y (m)')

 

이처럼, 파이썬을 이용하면 실험 데이터를 간단하게 시각화 할 수 있다. 하지만, 매번 실험을 하는 것도 매우 번거롭고, 지구의 공전, 유체의 움직임처럼 실험 데이터를 얻기 힘든 것들도 있다. 따라서, 다음 시간에는 변인들 간의 최소한의 관계식만 알아낸 뒤, 미분방정식을 세워 컴퓨터를 이용해서 풀어 값을 얻는 수치해석에 대해 알아볼 것이다.