Home > PYTHON > Module > Matplotlib & Seaborn

Matplotlib & Seaborn
python library Matplotlib Seaborn

Matplotlib #


파이썬 시각화 라이브러리로 matlab을 참고하여 제작함.
주로 논문에서 figure를 작성할때 사용함.

  • pyplot
    빠르고 간단하게 그래프를 그릴때 사용
  • OOP-style
    구체적으로 요소들을 손봐서 그래프를 그릴때 사용

pyplot #


아래 3개와 같이 기본적인 형이 존재하며 추가적인 속성들을 변경하여 그래프를 그린다.

  • 단일 plot 생성
plt.figure()  
plt.plot()  
plt.show()  
  • 단일 plot에 그래프들 겹치기
plt.figure()  
plt.plot()  
plt.plot()  
plt.show()  
  • 다중 plot 작성
plt.figure()  
plt.subplot(<axis0 size>,<axis1 size>,<position num>)
plt.subplot(<axis0 size>,<axis1 size>,<position num>)
plt.show()  

다음과 같은 데이터가 있을때

x = ["data1", "data2", "data3", "data4"]  
y = [111, 156, 487, 445]  
z = [50, 549, 450, 42]  

아래와 같은 그래프들을 그릴 수 있으며

plt.bar(<data1>, <data2>, *arg)  
plt.barh(<data1>, <data2>, *arg)  
plt.plot(<data1>, <data2>, *arg)  
plt.scatter(<data1>, <data2>, *arg)  

아래와 같은 옵션들을 사용이 가능하다

plt.figure(figsize=(10,5))  
plt.plot(x,y, label="plot", width=0.2, color="red", marker="^")  
plt.title("Title", fontdict={'fontsize': 10}, loc="center")  
plt.xlabel("menu", fontdict={'fontsize': 10}, loc="left")  
plt.ylabel("data", fontdict={'fontsize': 10}, loc="bottom")  
plt.legend(loc="upper right")  
plt.yticks([1,2,5,50,100,200])  
plt.ylim(0, 1000)  
plt.grid(alpha=1, color="red", linewidth=10)  

Seaborn(Statisical Data Visualization library based on Matplotlib) #


Matplotlib를 참고하여 제작하였으나 파이썬의 라이브러리에 더 친화적이다.
pandas의 dataframe을 사용하는데 용이함
기본적인 세팅은 plt와 같으며 아래와 같이 제공하는 데이터를 불러올 수 있다.

data = sns.load_dataset("penguins")

NaN 데이터는 아래와 같이 정리가 가능하며

data = data.dropna()  
data.isnull()  
data[data.isnull().any(axis=1)]

plt외에도 아래와 같은 세팅도 가능하다.

sns.set_palette("bone")

히스토그램 #


sns.histplot(data=data, x="body_mass_g", bins=15, hue="species", multiple="stack")

밀도표 #


sns.displot(data=data, kind="kde", x="body_mass_g", hue="species", col="island")

막대그래프 #


confidence interval(Default: 에러영역)를 가짐

sns.barplot(data=data, x="species", y="body_mass_g", hue="sex", ci="sd")
sns.barplot(data=data, x="body_mass_g", y="species")

갯수표 #


sns.countplot(data=data, x="sex")

박스 그래프 #


outlier를 확인할 수있음

sns.boxplot(data=data, x="sex", y="bill_depth_mm")

violin 그래프 #


분포를 확인하는데 효과적임
sns.violinplot(data=data, x=”species”, y=”bill_depth_mm”)

라인 그래프 #


경향성과 confidence interval(Default: 에러영역)를 가짐

sns.lineplot(data=data, x="body_mass_g", y="bill_depth_mm")

포인트 그래프 #


경향성과 confidence interval(Default: 에러영역)를 가짐

sns.pointplot(data=data, x="body_mass_g", y="bill_depth_mm")

분산도 그래프 #


sns.scatterplot(data=data, x="body_mass_g", y="bill_depth_mm")

페어 그래프 #


numeric value들의 비교표들 모음

sns.pairplot(data=data, hue="species")

히트맵 그래프 #


상관관계를 색상으로 나타냄
상관계수 파악을 위해 corr matrix 생성하여 만듬

corr = data.corr(numeric_only = True)

sns.heatmap(data=corr, square=True, cmap="Blues", annot=True, fmt=".4f")