강의실/컴퓨팅사고 with python

Ch12_라이브러리 활용(1)_Matplotlib

jsBae 2025. 6. 6. 21:07

학습목표

 

  • 라이브러리의 개념을 익히고 외부 라이브러리를 설치 할 수 있다.
  • 다양한 외부 라이브러리를 익히고 프로그램에 사용 해 본다.

1.라이브러리 개념

 

  • 라이브러리(library)는 도서관이라는 말 뜻대로 다양한 함수가 모인 곳
  • 즉 특정 작업을 수행하기 위해서 미리 작성된 코드의 집합
  • 다양한 기능을 제공하며, 프로그래머가 새로운 코드를 처음부터 작성할 필요없이 효율적으로 프로그램을 개발할 수 있게 도와 줌

2.다양한 라이브러리 예

 

  • NumPy: 과학 계산을 위한 기본적인 라이브러리, 강력한 N차원 배열 객체와 이를 처리하는 다양한 함수를 제공합니다. 선형대수, 푸리에 변환, 난수 생성 등의 기능을 포함합니다. 기본 패키지 중 하나입니다.
  • Pandas: 데이터 처리와 분석을 위한 라이브러리, 특히 테이블 형태의 데이터를 다루는데 유용합니다. 데이터프레임(DataFrame)과 시리즈(Series) 같은 자료구조를 제공하며, 데이터 조작, 정리, 탐색에 강력한 도구를 제공합니다.
  • Matplotlib: 데이터를 시각화하는 라이브러리, 그래프와 차트를 쉽게 만들 수 있습니다. 플롯(Plot), 히스토그램, 바 차트 등 다양한 형태의 시각화를 지원합니다.
  • TensorFlow/PyTorch: 두 라이브러리 모두 딥러닝과 머신 러닝을 위한 라이브러리로, 신경망을 구축하고 훈련하는 데 사용됩니다. 둘 다 대규모 데이터셋에 대한 학습, 자동 미분, 다양한 최적화 알고리즘을 제공합니다.
  • 필로우(Pillow): PIL(Python Imaging Library)와 호환성을 유지하면서 쉽게 사용할수 있는 영상 처리 라이브러리.

3. 라이브러리 설치 – pip

PIP
Pip Installs Packages의 약자로,
파이썬 패키지를 설치·관리하는 표준 도구이다.

  • 외부에서 만든 다양한 기능(예: 이미지 처리, 데이터 분석 등)을 손쉽게 사용할 수 있음
  • 복잡한 설정 없이 명령 한 줄로 설치 가능
  • 파이썬에 기본 내장되어 있어 별도 설치 없이 사용 가능
pip install Pillow

🚨 설치가 되지 않을 경우?

주의사항:

  • 파이썬 버전과 라이브러리 버전이 호환되지 않으면 오류 발생
  • 이럴 땐:
    1. 설치하려는 라이브러리의 지원 버전을 확인
    2. python --version으로 현재 파이썬 버전 확인
    3. 필요시 가상환경(venv)을 사용해 버전을 맞춰서 설치
  • 설치 확인 방법
pip show Pillow

2.맷플롯립(Matplotlib)-그래프를 그려보자

  • Python에서 가장 널리 사용되는 데이터 시각화 라이브러리
  • 복잡한 자료를 숫자나 텍스트보다는 그래프나 차트로 데이터를 시각화하여 이해하고 분석하는 것이 효과적
  • 데이터를 시각화하는데 편리한 라이브러리
  • 선 그래프, 막대 그래프, 히스토그램, 산점도, 파이 차트 등 다양한 유형의 그래프를 지원
  • 파일 저장: 생성한 그래프를 다양한 형식(예: PNG, PDF, SVG)으로 저장

https://matplotlib.org/stable/

 

Matplotlib documentation — Matplotlib 3.10.3 documentation

Warning If you install Python with uv then the tkagg backend will not be available because python-build-standalone (used by uv to distribute Python) does not contain tk bindings that are usable by Matplotlib (see this issue for details). If you want Matplo

matplotlib.org

!pip install matplotlib
from matplotlib import pyplot as plt

2.간단한 그래프📣

  • 우리는 matplotlib의 하위 모듈인 pyplot을 사용한다. pyplot은 객체 지향적인 인터페이스를 제공한다.
  • 각 그래프나 차트는 하나의 '객체'로 취급되며, 이는 각 그래프나 차트가 자신만의 속성(예: 색상, 레이블, 크기 등)과 메소드(예: 그리기, 색상 변경 등)를 가지고 있다는 의미.
  • x값과 y값을 리스트 형태로 plot() 함수로 전달하면, plot() 함수는 이것으로 선 그래프를 그린다.
MyGrowHeight = [130, 140, 150, 165, 175, 176]
plt.plot(MyGrowHeight)
plt.show()
plt.plot(x, y)  # x와 y는 데이터 포인트의 리스트 또는 배열
plt.show()

plot 주요 매개변수📣

  • x, y: 각각 x축과 y축에 대응하는 데이터 값입니다.
  • color: 선의 색상을 지정합니다.
  • linestyle: 선의 스타일을 지정합니다 (예: '-', '--', '-.', ':').
  • linewidth: 선의 너비를 지정합니다.
  • marker: 데이터 포인트에 표시할 마커의 스타일을 지정합니다 (예: 'o', '^', 's').
  • label: 범례에 사용될 라벨을 지정합니다.
x = [1,2,3]
y = [1,2,3]

plt.plot(x, y, linewidth=2, linestyle=":", color="red", marker="*") #line두께, color
plt.title('myplot')
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(['test'], loc ='lower right')
plt.grid() #그래프에 눈금선이 들어감

plt.show()


3.하나의 그래프에 2개의 값을 겹쳐서 표시📣

X = [ "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" ]
Y1 = [15.6, 14.2, 16.3, 18.2, 17.1, 20.2, 22.4]
Y2 = [20.1, 23.1, 23.8, 25.9, 23.4, 25.1, 26.3]

plt.plot(X,Y1, X,Y2) #plot()에 2개의 리스트 쌍을 보낸다.
plt.xlabel('day')  #x라벨
plt.ylabel('temperature') #y라벨
plt.title('Temperatures of Cities', fontsize=20) #제목, fontsize 속성
plt.legend(['y1','y2'], loc='lower right') #숫자로 표시가능
plt.show()

2차함수 그리기

import matplotlib.pyplot as plt

x, y, z = [],[],[]

for i in range(100):
    x.append(i/50.0)

for i in x:
    y.append(i**2)

for i in x:
    z.append(i**3)

plt.plot(x,x, label="linear")
plt.plot(x,y, label="제곱")
plt.plot(x,z, label="cubic")

plt.xlabel('input')
plt.ylabel('ouput')
plt.legend(['liner','quadratic','cubic'], loc='upper left')
plt.title('function')
plt.show()


막대그래프 : bar()

  • 이산적(연속적이지 않은) 데이터를 시각화할 때 적합
  • 카테고리 비교(Category Comparison) 할 때
  • 변화 추적 : 시간이 지남에 따라 특정 카테고리의 변화를 추적할 때
  • 구성 요소 비교(Comparison of Parts to a Whole): 전체에 대한 부분들의 비율을 비교할 때]
import matplotlib.pyplot as plt
x = ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]
y = [15.6, 14.2, 16.3, 18.2, 17.1, 20.2, 22.4]

plt.bar(x,y, width=0.5, color='green', hatch='/')
plt.savefig('bar.jpg')
plt.show()


누적 막대 그래프

  • bar에서 매개변수 bottom을 사용하여 이전 값을 더해 주는 형태로 만들어간다.
import matplotlib.pyplot as plt
import numpy as np

x= [1,2,3,4]
a = np.array([10,15,20,25])
b = np.array([50, 55, 60, 65])
c = np.array([100, 105, 110, 115])

plt.bar(x, a, color='pink')
plt.bar(x, b, color="green", bottom=a)
plt.bar(x, c, color='red', bottom=a+b) #배열간의 a + b를 사용하기 위해 numpy 사용

plt.show()

분포도 : scatter()

  • 분포도란 : 선이 아닌 점으로 그래프를 표시하는 방법
  • (x,y) 좌표의 자료 필요
import matplotlib.pyplot as plt

numX = [1,2,3,4,5,6,7,8,9,10]
numY = range(10, 0, -1)

plt.scatter(numX, numY, s=50, c='red') #s는 크기, c는 color
plt.xlabel('X')
plt.ylabel('Y')
plt.show()


원그래프 - pie()

  • pie()를 호출하여 그린다
  • 비율 비교:여러 항목이 전체에서 차지하는 비율을 비교할 때
  • 구성 요소 분석:상대적인 크기를 시각적으로 쉽게 파악
  • 원형 그래프는 비교적 적은 수의 카테고리로 구성된 단순한 데이터 세트에 적합
  • 파이 챠트 중에서 하나의 파이가 눈에 띄기를 원한다면 explode 매개 변수(폭발처럼 떨어져 나가서 그려짐)를 이용한다.
import matplotlib.pyplot as plt

ratio = [40, 20, 10, 30]
labels =["Eating Out", "Shopping", "Groceries", "Housing"]
explode = [0.1, 0, 0, 0] #하나의 파이를 분리하여 표시
plt.pie(ratio, labels=labels, explode=explode)
plt.show()

그래프 저장과 불러오기-저장하기 : savefig('파일명)

x = [1,2,3]
y = [1,2,3]

plt.plot(x, y, linewidth=2, color="red") #line두께, color
plt.title('myplot')
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(['test'])

plt.savefig('bar3.jpg')
plt.show()

그래프 이미지 불러오기

  • PIL 필로우 라이브러리 이용
import matplotlib.pyplot as plt
from PIL import Image

img = Image.open('/content/bar2.jpg')
print(img.size)
plt.imshow(img)

요약

코드 설명
import matplotlib.pyplot as plt pyplot 모듈을 plt라는 이름으로 불러옴
x = [...], y = [...] x축과 y축에 들어갈 데이터 설정
plt.plot(x, y) x, y 데이터를 기반으로 선 그래프 그리기
plt.title(), xlabel(), ylabel() 제목과 축 이름 설정
plt.show() 그래프를 화면에 출력 (※ 꼭 있어야 화면에 보임!)

 

728x90
반응형