2017-09-14 9 views
0

내 dataFrame, DF :하기 matplotlib : 하나의 플롯에 두 개 이상의 열에 대한 플롯 countplot

Sno | Attribute_1 | Attribute_2 | Attribute_3 
__________________________________________________ 
1 | option_1  | option_3  |option_2 
2 | option_1  | option_1  |option_1 
3 | option_2  | option_2  |option_2 
4 | option_1  | option_1  |option_3 
5 | option_3  | option_2  |option_2 
6 | option_3  | option_3  |option_1 
7 | option_1  | option_3  |option_2 

여기 Attribute_1, Attribute_2 및 Attribute_3이 범주 데이터 포함 - 각 행에 대한 option_1 또는 option_2 또는 option_3을.

모든 속성에 대해 동일한 플롯에서 카운트 플롯을 생성하려고합니다. 나는에 의해 하나 개의 컬럼을 위해 그것을 할 수 있어요 :

sns.countplot(x="Attribute_1", data=df); 

내가 개별적으로 각 속성에 대해 만들 수 있지만이 같은 음모에 그 무엇을 찾고 내가 모든 속성에 대한 카운트 플롯을 가질 수 있습니다 . 즉 X 축에는 속성이 있고 각 속성에는 세 개의 카운트 플롯이 있습니다.

답변

1

Seaborn은 일반적으로 긴 형식의 데이터 세트에서 가장 잘 작동합니다. 나는. 각 속성마다 다른 옵션이있는 3 개의 열 대신에 옵션과 속성의 2 개의 열이 있습니다. 이것은 pd.melt을 통해 쉽게 생성 할 수 있습니다.

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns 

a= np.random.choice(["option_{}".format(i) for i in [1,2,3]], size=(12,3)) 
df = pd.DataFrame(a, columns=["Attribute_{}".format(i) for i in list("ABC")]) 

sns.countplot(x="variable", hue="value", data=pd.melt(df)) 

plt.show() 

enter image description here

는 마찬가지로 당신이 xhue를 교환 할 수 있습니다 :

sns.countplot(x="variable", hue="value", data=pd.melt(df)) 

전체 예제 : 그런 다음 hue 값은 "옵션"열을 사용할 수 있습니다

sns.countplot(x="value", hue="variable", data=pd.melt(df)) 

enter image description here

+0

고마워요. 도와 줬어. –