2017-08-04 8 views
2

異なるクラスを与える列を持つインデックス(ここではインデックスとして、または転置用の列でもよい)に対して特定のマーカーと色付けを持つ散布図を作成することは可能ですか?すなわち、グループ間の一貫性を維持するグループカラーリング内。インデックスによる色/マーカー海底散布図

import pandas as pd 
df = pd.DataFrame({'Class_1': [0.98, 0.93, 0.95], 'Class_2': [0.48, 0.43, 0.45], 'Class_3': [0.78, 0.73, 0.75]}, index = ['precision', 'recall', 'fscore']) 
display(df) 
import seaborn as sns 
import matplotlib.pyplot as plt 
sns.stripplot(data = data) 
plt.show() 

これは、次のように生成します。

enter image description here

ここで行われているようしかし、私は、インデックスによって色付けする方法を理解したいと思います:

enter image description here

答えて

2

ピボットテーブルから古典的なテーブルデータフレームにデータフレームを再編成し、hue引数のを使用します。ここのように:

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

df = pd.DataFrame({'Class_1': [0.98, 0.93, 0.95], 'Class_2': [0.48, 0.43, 0.45], 'Class_3': [0.78, 0.73, 0.75]}, index = ['precision', 'recall', 'fscore']) 

# convert dataframe 
df2=df.stack() 
df2 = df2.reset_index() 
df2.columns = ['Index','Classes','Values'] 
print(df2) 

sns.stripplot(data=df2,x='Classes',y='Values',hue='Index', palette="Set2") 

plt.show() 

DF2:

 Index Classes Values 
0 precision Class_1 0.98 
1 precision Class_2 0.48 
2 precision Class_3 0.78 
3  recall Class_1 0.93 
4  recall Class_2 0.43 
5  recall Class_3 0.73 
6  fscore Class_1 0.95 
7  fscore Class_2 0.45 
8  fscore Class_3 0.75 

enter image description here