如何在散点图多索引数据框中获取适当的标签

时间:2018-10-02 09:27:06

标签: pandas matplotlib scatter-plot

我有一个看起来像这样的数据集:

dataset = pd.read_csv("dataset.xls", sep='\t',index_col=0)

Nr  TID PID x [pixel]   y [pixel]
1   1   1   266.659 243.028
2   1   2   266.659 243.028
3   1   3   266.659 242.372
4   1   4   266.659 242.372
5   1   5   266.659 242.372
6   1   6   267.972 238.433
7   1   7   267.972 238.433
8   1   8   267.972 237.777
9   2   1   267.315 235.808
10  2   2   267.315 234.495
11  2   3   267.315 234.495
12  2   4   267.972 232.526
13  2   5   267.972 232.526
14  2   6   267.972 231.213
15  2   7   267.972 231.213
16  3   1   267.315 230.556
17  3   2   267.315 230.556
18  3   3   267.972 227.931
19  3   4   267.972 227.931
20  3   5   267.972 227.931
21  3   6   267.972 227.931
22  3   7   267.972 225.962

使用大熊猫,我将其转换为索引为TID和PID的多索引数据:

df = dataset.set_index(["TID", "PID"])

TID PID x [pixel]   y [pixel]
1   1   266.659 243.028
1   2   266.659 243.028
1   3   266.659 242.372
1   4   266.659 242.372
1   5   266.659 242.372
1   6   267.972 238.433
1   7   267.972 238.433
1   8   267.972 237.777
2   1   267.315 235.808
2   2   267.315 234.495
2   3   267.315 234.495
2   4   267.972 232.526
2   5   267.972 232.526
2   6   267.972 231.213
2   7   267.972 231.213
3   1   267.315 230.556
3   2   267.315 230.556
3   3   267.972 227.931
3   4   267.972 227.931
3   5   267.972 227.931
3   6   267.972 227.931
3   7   267.972 225.962

如果我进行散点图,我会得到:

plt.scatter(df["x [pixel]"],df["y [pixel]"])

scatter plot

我可以使用以下命令在列表中提取TID_index:

TID_index = df.index.get_level_values("TID").unique()

但是,当我尝试使用这些索引作为标签时,在图中将获得一个唯一的标签,其中包含TID_index的第一个元素:

plt.scatter(df["x [pixel]"],df["y [pixel]"])
plt.legend(TID_index)

scatter plot with label

我的目标是将TID_index中的每个值都用作标签。如果您能指出正确的方向,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用seaborn中的scatterplot。函数的hue自变量用于指示分组变量,该变量将产生具有不同颜色的点:

import seaborn as sns
sns.scatterplot(df["x [pixel]"], df["y [pixel]"],
                hue=df.index.get_level_values("TID"), legend='full')

enter image description here