본문 바로가기
파이썬기초(Python Basic)

파이썬 그래프 그리기

by 친절한에릭 2023. 5. 8.

안녕하세요. 오늘은 파이썬을 이용한 그래프를 그려주는 방법을 알아보도록 하겠습니다.그래프를 그려주기 위해 matplotlib 라이브러리를 사용할 것입니다 .matplotlib은 파이썬에서 그래프와 데이터 시각화를 위해 사용되는 라이브러리입니다. matplotlib 데이터 사이언스 분야에서 파이썬 코드를 이용한 데이터 시각화에 자주 사용되기 때문에 공부해 두시면 큰 도움이 되실 것입니다.

 

파이썬  그래프 그리기 코드 예제

matplotlib다양한 종류의 그래프와 차트를 생성할 수 있으며, 그래프의 스타일과 색상 등 세부적인 요소를 사용자가 원하는 대로 커스터마이징할 수 있습니다. 주로 데이터 분석 및 데이터 시각화에 사용되며, 파이썬의 다른 데이터 분석 라이브러리인 pandas, NumPy 등과 함께 사용되기도 합니다.

 

아래 코드는 파이썬의 시간에 따른 물체의 낙하 속도와 가속도의 그래프를 그려주는 예제입니다.

낙하 거리는 유저로부터 입력을 받는 것으로 가정하고, 시간에 따른 거리와 속도와 가속도 그래프를 한번 그려보겠습니다.

 

import matplotlib.pyplot as plt

def main():
    time_interval = 0.1
    distances = input("Enter the distances the object fell every 0.1 seconds (separated by commas): ").split(',')
    distances = [float(d) for d in distances]

    velocities = calculate_velocities(distances)
    accelerations = calculate_accelerations(velocities, time_interval)

    # 중력 가속도 계산
    if len(accelerations) > 0:
        gravity_acceleration = sum(accelerations) / len(accelerations)
    else:
        gravity_acceleration = 0

    print(f"Gravity Acceleration: {gravity_acceleration:.2f} m/s^2")

    plot_graph(distances, velocities, accelerations)

def calculate_velocities(distances):
    velocities = []
    for i in range(1, len(distances)):
        velocity = (distances[i] - distances[i-1]) / 0.1
        velocities.append(velocity)
    return velocities

def calculate_accelerations(velocities, time_interval=1):
    accelerations = []
    for i in range(1, len(velocities)):
        acceleration = (velocities[i] - velocities[i-1]) / time_interval
        accelerations.append(acceleration)
    return accelerations

def plot_graph(distances, velocities, accelerations):
    time = [i * 0.1 for i in range(len(distances))]

    plt.figure(figsize=(12, 4))

    plt.subplot(131)
    plt.plot(time, distances, 'o-')
    plt.title("Distance-Time Graph")
    plt.xlabel("Time (s)")
    plt.ylabel("Distance (m)")

    plt.subplot(132)
    plt.plot(time[1:], velocities, 'o-')
    plt.title("Velocity-Time Graph")
    plt.xlabel("Time (s)")
    plt.ylabel("Velocity (m/s)")

    plt.subplot(133)
    plt.plot(time[2:], accelerations, 'o-')
    plt.title("Acceleration-Time Graph")
    plt.xlabel("Time (s)")
    plt.ylabel("Acceleration (m/s^2)")
    plt.ylim(min(accelerations) - 1, max(accelerations) + 1)  # y축 범위를 가속도 값에 맞게 조정합니다.

    plt.tight_layout()
    plt.show()

if __name__ == "__main__":
    main()

 

이 코드는 사용자로부터 0.1초마다 물체가 낙하한 거리를 입력받아, 해당 시간 동안의 속도와 가속도를 계산한 후, 거리-시간, 속도-시간, 가속도-시간 그래프를 생성하여 출력합니다. 코드의 각 부분은 다음과 같은 역할을 수행합니다.

 

  1. main() 함수: 사용자로부터 거리 값을 입력받고, 속도와 가속도를 계산한 후, 그래프를 그리는 함수들을 호출합니다.
  2. calculate_velocities() 함수: 거리 값을 이용하여 속도를 계산합니다. 이전 시간 대비 거리의 변화를 시간의 변화(0.1초)로 나누어 속도를 구합니다.
  3. calculate_accelerations() 함수: 속도 값을 이용하여 가속도를 계산합니다. 이전 시간 대비 속도의 변화를 시간의 변화(0.1초)로 나누어 가속도를 구합니다.
  4. plot_graph() 함수: 계산된 거리, 속도, 가속도 값을 이용하여 그래프를 그립니다. 각 그래프는 matplotlib 라이브러리를 사용하며, 그래프의 제목, x축, y축 레이블을 설정합니다.

이러한 과정을 통해 코드가 실행되며, 사용자가 입력한 낙하 거리에 따른 속도와 가속도 변화를 시각적으로 확인할 수 있습니다.

파이썬 낙하 가속도 코드 실행결과

 

자유 낙하를 가정했을 때 실행결과는 아래와 같습니다.

입력값: 0, 0.04905, 0.19620, 0.44145, 0.78480, 1.22625, 1.76580, 2.40345, 3.13920, 3.97305, 4.90500

 

파이썬그래프
파이썬그래프

자유 낙하의 경우, 초기 속도가 0이고 중력가속도(g)는 약 9.81m/s²입니다. 이 가속도로 인해 물체의 낙하 거리는 시간이 지남에 따라 증가합니다. 낙하 거리는 다음 공식을 사용하여 계산할 수 있습니다.

거리(d) = 1/2 × g × t²

이를 통해 0.1초마다 물체의 낙하 거리를 계산할 수 있습니다. 예를 들어, 약 1초 동안 물체의 낙하 거리는 다음과 같습니다.

0초: 0m 0.1초: 0.04905m 0.2초: 0.19620m 0.3초: 0.44145m 0.4초: 0.78480m 0.5초: 1.22625m 0.6초: 1.76580m 0.7초: 2.40345m 0.8초: 3.13920m 0.9초: 3.97305m 1.0초: 4.905000m

위의 값들을 콤마로 구분하여 입력값으로 사용할 수 있습니다:

 0, 0.04905, 0.19620, 0.44145, 0.78480, 1.22625, 1.76580, 2.40345, 3.13920, 3.97305, 4.90500

 

파이썬그래프그리기
파이썬그래프그리기

댓글