- 파이썬에서 2D 형태의 그래프, 이미지 등을 그릴 때 사용하는 것으로, 실제 과학 컴퓨팅 연구 분야나 인공지능 연구 분야에서도 많이 활용
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
라이브러리 불러오기plt.plot([x축 데이터], [y축 데이터])
: plot() 함수에 데이터 입력하기plt.show()
: 그래프 보여주기
import matplotlib.pyplot as plt
plt.plot([10,20,30,40])
plt.show()
import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [12, 43, 25, 15])
plt.show()
plt.title('제목에 넣을 문자열')
import matplotlib.pyplot as plt
plt.title('plotting')
plt.plot([10,20,30,40])
plt.show()
plt.plot([],label='')
: 속성의 레이블값으로 문자열
plt.legend()
: 레이블 값이 범례로 나옴
import matplotlib.pyplot as plt
plt.title('legend')
plt.plot([10,20,30,40], label='asc')
plt.plot([40,30,20,10], label='desc')
plt.legend()
plt.show()
plt.legend(loc=5)
: 범례의 위치 직접 지정
plt.plot([],color='')
: 생략 시 자동으로 색상 설정
import matplotlib.pyplot as plt
plt.title('color')
plt.plot([10,20,30,40], label='skyblue', color='skyblue')
plt.plot([40,30,20,10], label='pink', color='pink')
plt.legend()
plt.show()
plt.plot([],linestyle='')
: 원하는 선 모양 지정 가능
import matplotlib.pyplot as plt
plt.title('linestyle')
plt.plot([10,20,30,40], label='dashed', color='r', linestyle='-')
plt.plot([40,30,20,10], label='dotted', color='g',linestyle=':')
plt.legend()
plt.show()
plt.plot([1,2,3,4], 'r-')
: 색상과 선모양을 동시에 적어도 됨import matplotlib.pyplot as plt
plt.title('linestyle')
plt.plot([10,20,30,40],'r.', label='circle')
plt.plot([40,30,20,10], 'g^', label='triangle')
plt.legend()
plt.show()
plt.plot([1,2,3,4], 'r.-')
: 색상, 마커모양, 선모양을 동시에 생성 가능import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data)
for row in data:
print(row[-1])
import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '': # 최고 기온이 있는 날만 결과 리스트에 넣음.
result.append(float(row[-1]))
print(result)
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '':
result.append(float(row[-1]))
plt.plot(result,'r') # 결과를 빨간색그래프로 표현
plt.show()
- 그래프 크기 조절하기 : figure()의 figsize=(가로, 세로) 이용
plt.figure(figsize = (10, 2)) #가로 10인치, 세로 2인치
s = 'hello python'
print(s.split()) #['hello', 'python'] 출력
- split() : 공백 기준 문자열 분리
date= '1990-01-01'
print(date.split('-')) #['1990', '01', '01'] 출력
print(date.split('-')[0]) #1990
print(date.split('-')[1]) #01
print(date.split('-')[2]) #01
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '':
if row[0].split('-')[1] == '08': #최고기온이 8월인 경우만
result.append(float(row[-1]))
plt.plot(result,'hotpink')
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '':
if row[0].split('-')[1] == '08' and row[0].split('-')[2] == '14': # 매년 8월 14일의 최고 기온만 출력
result.append(float(row[-1]))
plt.plot(result,'y')
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
high = []
low = []
for row in data:
if row[-1] != '' and row[-2] != '':
if 1983 <= int(row[0].split('-')[0]):
if row[0].split('-')[1] == '08' and row[0].split('-')[2] == '14':
high.append(float(row[-1]))
low.append(float(row[-2]))
plt.plot(high,'r')
plt.plot(low,'g')
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
high = []
low = []
for row in data:
if row[-1] != '' and row[-2] != '':
if 1983 <= int(row[0].split('-')[0]):
if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14':
high.append(float(row[-1]))
low.append(float(row[-2]))
plt.plot(high,'r')
plt.plot(low,'g')
plt.rc('font', family = 'AppleGothic') # 폰트 설정
plt.rcParams['axes.unicode_minus'] = False # 한글의 마이너스가 안깨지도록 설정
plt.title('생일 그래프')
plt.show()
- hist() 함수 : 자료 분포상태를 직사각형 모양의 막대로 나타냄. 데이터의 빈도에 따라 높이가 결정됨
import matplotlib.pyplot as plt
plt.hist([1,1,2,3,4,5,6,6,7,8,10])
plt.show()
- 주사위를 굴린다
- 나온 결과를 기록한다
- 이 과정을 N번 반복
- 주사위의 눈이 나온 횟수를 히스토그램으로 나타냄
randint(a,b)
: a 이상 b 이하 정수 중 하나 숫자를 무작위로 선택import random
dice = []
for i in range(10):
dice.append(random.randint(1,6))
print(dice)
import random
import matplotlib.pyplot as plt
dice = []
for i in range(10):
dice.append(random.randint(1,6))
plt.hist(dice)
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '':
result.append(float(row[-1]))
plt.hist(result, bins=100, color='r')
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
aug = []
for row in data:
if row[-1] != '' and row[0].split('-')[1] == '08':
aug.append(float(row[-1]))
plt.hist(aug, bins=100, color='r')
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
aug = []
jan = []
for row in data:
m = row[0].split('-')[1]
if row[-1] != '' :
if m == '08':
aug.append(float(row[-1]))
if m == '01':
jan.append(float(row[-1]))
plt.hist(aug, bins=100, color='r')
plt.hist(jan, bins=100, color='b')
plt.show()
- boxplot() : 자료에서 얻어낸 최댓값, 최솟값, 상위 ¼, 2/4(중앙), 3/4에 위치한 값을 보여주는 그래프
import random
import matplotlib.pyplot as plt
import numpy as np
r = []
for i in range(100):
r.append(random.randint(1,1000))
plt.boxplot(r)
plt.show()
result = np.array(r)
print("¼: "+str(np.percentile(result,25)))
print("2/4: "+str(np.percentile(result,50)))
print("¾: "+str(np.percentile(result,75)))
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data:
if row[-1] != '':
result.append(float(row[-1]))
plt.boxplot(result)
plt.show()
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
aug = []
jan = []
for row in data:
m = row[0].split('-')[1]
if row[-1] != '' :
if m == '08':
aug.append(float(row[-1]))
if m == '01':
jan.append(float(row[-1]))
plt.boxplot(aug)
plt.boxplot(jan)
plt.show()
plt.boxplot([jan, aug])
- 최고 기온 데이터를 월별로 구분하기
- 데이터를 월별로 분류해 저장
- 월별 데이터를 상자 그림으로 그림
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
month = [[],[],[],[],[],[],[],[],[],[],[],[]]
for row in data:
if row[-1] != '':
month[int(row[0].split('-')[1])-1].append(float(row[-1])) #month 인덱스는 0부터 시작하므로 -1해줌
plt.boxplot(month)
plt.show()
8월 일별 기온 데이터 상자 그림으로 표현
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
day = []
for i in range(31):
day.append([])
for row in data:
if row[-1] != '':
if row[0].split('-')[1] == '08':
day[int(row[0].split('-')[2])-1].append(float(row[-1]))
plt.style.use('ggplot')
plt.figure(figsize=(10,5), dpi=300)
plt.boxplot(day, showfliers=False)
plt.show()
plt.style.use('ggplot')
: 그래프 스타일 지정 > 그래프 배경이 회색 격자무늬로 변경됨. 2/4값을 표현하는 선의 색상도 변경되었음