как получить правильные метки на графике рассеяния мультииндексных данных - PullRequest
0 голосов
/ 02 октября 2018

У меня есть набор данных, который выглядит следующим образом:

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:

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

scatter plot with label

Моя цель - иметь каждое значение в TID_index в качестве метки.Если бы вы могли указать мне правильное направление, я был бы очень признателен.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете использовать scatterplot из seaborn .Аргумент 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

...