color/marker 按索引 seaborn 散点图

color/marker by index seaborn scatterplot

是否可以构建一个具有特定标记和索引着色的散点图(此处作为索引给出,或者可以是用于转置的列),其中的列给出不同 类。即 - 在组内保持组间颜色一致。

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()

这会产生以下结果:

但是,我想了解按索引着色的方法,如下所示:

将您的数据框从枢轴 table 重组为经典 table 数据框并使用 stripplothue 参数,如下所示:

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