我有一个看起来像这样的数据集:
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]"])
我可以使用以下命令在列表中提取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)
我的目标是将TID_index中的每个值都用作标签。如果您能指出正确的方向,我将不胜感激。
谢谢。
答案 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')