728x90
Matplotlib
- john hunter가 개발 시작
- 2012년 사후, michael droettboom 개발자 그룹에서 개발
일반 사인 그래프
import numpy as np
import matplotlib.pyplot as plt
# inline으로 출력
%matplotlib inline
# 비 대화형
plt.ioff()
x = np.linspace(0, 10, 50)
sinus = np.sin(x)
plt.plot(x, sinus)
plt.show()
플롯 옵션과 레전드(범례) 추가
cosinus = np.cos(x)
plt.plot(x, sinus, label="sinus", color="blue",
linestyle="--",linewidth=2)
plt.plot(x, cosinus, label="cosinus", color="red",
linestyle="-",linewidth=2)
plt.legend()
plt.show()
봉급 예제 산포도 그리기
1. csv 읽어오기
import pandas as pd
#봉급 예제 산포도 그리기
url = "https://raw.github.com/neurospin/pystatsml/master/datasets/salary_table.csv"
salary = pd.read_csv(url)
salary.head()
2. 색상 지정하고 플로팅
df = salary
colors = colors_edu = {"Bachelor" :"r", "Master":"g", "Ph.D":"blue"}
plt.scatter(df["experience"], df["salary"],
c=df["education"].apply(lambda x:colors[x]), s = 100)
plt.show()
그루핑 후 플로팅 하기
# matplotlib에서 qt5로 그래프 출력
%matplotlib qt5
plt.ion()
symbols_manag = dict(Y="*", N=".")
# group by education x amangement => 6group
for values,d in salary.groupby(["education", "management"]):
edu, manager = values
plt.scatter(d["experience"], d["salary"],
marker=symbols_manag[manager],color=colors_edu[edu],
s=150,label=manager+"/"+edu)
#set label
plt.xlabel("Experience")
plt.ylabel("Salary")
plt.legend(loc=4) #lower right
fig, subplot 예제
- fig : 캔버스
- subplot : 하부 그래프
%matplotlib inline
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax1.hist(np.random.randn(100), bins=20, color="k", alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3*np.random.randn(30))
ax3.plot(np.random.randn(50).cumsum(),"k--")
plt.show()
subplots() 예제
- 그래프 여러개 그리기
#subplots()함수 사용하기
fig, axs = plt.subplots(2,2)
axs[0,0].plot(x, sinus)
axs[0,1].plot(x, -sinus)
axs[1,0].plot(x, cosinus)
axs[1,1].plot(x, -cosinus)
plt.show()
Seaborn
- matplotlib은 로우 레벨에서 부터하다보니 다양하게 할수있지만 잘 그리려면 많은 경험과 노력이 필요
=> matplotlib 기반의 간편 시각화 라이브러리
iris 시각화
1. iris 데이터 로드
- 컬럼 확인
2. 히스토그램 플로팅
3. 카테고리별 플롯
4. 결합 플로팅
5, 회귀선 플롯
import seaborn as sns
sns.set(style="darkgrid")
iris=sns.load_dataset("iris")
print(iris.columns)
iris.columns = ["sl", "sw", "pl", "pw", "sp"]
iris.head()
# sp 별 그리드 생성, 히스토그램으로 sl 플롯
g = sns.FacetGrid(iris,col="sp")
g = g.map(plt.hist, "sl")
#카테고리별 플롯
sns.catplot(x="sp", y="sl", kind="boxen", data=iris)
#결합 분포 플로팅
sns.jointplot(x="sw", y="sl", data=iris, kind="kde", space=0, color="g")
# 회귀선 플롯
sns.lmplot(x="sw", y="sl", data=iris)
# sp별 회귀선과 hue
sns.lmplot(x="sw", y="sl", data=iris, hue="sp")
R ggplot2
- Hadley Wickham(dplyr도 개발)이 개발
- 데이터 프레임 데이터를 시각화
- grammer of graphics, layered graphics
나무 데이터로 시작하자
1. 데이터 확인
2. Height 4그룹 분리
3. geom_point로 산점도로 plot
col = H로 4그룹으로 분류 가능
자동차 예제
1. tbl_df 로 출력
2. 클래스별 displ, hwy 플로팅
300x250
'수학 > 통계' 카테고리의 다른 글
파이썬R - 6. 파이썬 기술통계 (0) | 2020.10.28 |
---|---|
파이썬R - 5. R 기술통계 (0) | 2020.10.28 |
파이썬R - 3. R데이터처리, dplyr (0) | 2020.10.28 |
파이썬R - 2. R 데이터처리 (0) | 2020.10.27 |
파이썬R - 1. 파이썬 pandas (0) | 2020.10.27 |