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

+ Recent posts