subplot zip을 사용해서 쉽게 나열해서 시각화하기 (seaborn boxplot)
2020. 4. 8. 19:13ㆍ분석 Python/Visualization
아래 그림처럼 a , a.1 같은 데이터를 다르게 처리한 후 옆에 시각화해서 보고 싶을 때가 있다.
사실 전체 루프를 돌려도 되지만, 쉬운 방법이 있어서 공유한다.
import matplot.pyplot as plt
pair = list(zip(['a', 'b', 'c', 'd', 'e'],
['a.1', 'b.1', 'c.1', 'd.1', 'e.1']))
## 이미지 크기 및 subplots 개수 조절
fig , ax = plt.subplots(len(pair),2,figsize=(5,10))
## 여백 조정
plt.subplots_adjust(left=0.2, bottom=0.05, right=0.99,
top=0.99, wspace=0.6, hspace=0.3)
axes = ax.flatten()
for i , (first , second) in enumerate(zip(axes[::2] , axes[1::2])) :
first.text(0.5,0.5,s =str(pair[i][0]), fontsize= 20)
second.text(0.5,0.5, s= str(pair[i][1]), fontsize= 20)
plt.show()
위의 방식을 실제 응용하면 다음과 같다.
밑에 그림에서는 boxplot에서 outlier 처리 전과 후를 비교했다.
import seaborn as sns
pair = list(zip(['수정시가', '수정고가', '수정저가', '수정주가', '수정거래량'],
['시가', '고가', '저가', '종가', '거래량']))
fig , ax = plt.subplots(len(pair),2,figsize=(5,10))
plt.subplots_adjust(left=0.2, bottom=0.05, right=0.99,
top=0.99, wspace=0.6, hspace=0.3)
axes = ax.flatten()
for i , (first , second) in enumerate(zip(axes[::2] , axes[1::2])) :
sns.boxplot(x ="value", y="variable",
data= pd.melt(data[list(pair[i])]),
orient ="h", showfliers = False, ax =first)
sns.boxplot(x ="value", y="variable",
data= pd.melt(data[list(pair[i])]),
orient ="h", showfliers = True, ax = second)
plt.savefig("./price_vis.png")
plt.show()
위의 그림처럼 같은 데이터를 다르게 시각화해서 비교해서 보고 싶을 때 유용할 것 같다.
728x90
'분석 Python > Visualization' 카테고리의 다른 글
CNN 시각화 사이트 소개 (Convolutional Neural Networks) (0) | 2020.05.03 |
---|---|
seaborn layout 동적으로 만드는 방법 소개 (0) | 2020.04.19 |
Matplotlib 한글폰트 사용하는 전체 또는 개별 적용하는 방법 (0) | 2020.04.03 |
subplotting을 위한 plot 함수 만들어서 코드 간단하게 하기 (0) | 2020.03.29 |
파이썬 subplots 좀 더 잘 사용해보기 (0) | 2020.03.29 |