Возникла проблема с sns.scatterplot - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужна ваша помощь в объяснении и устранении этой проблемы.

Я запустил следующий код:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x = np.array([[0, 0], [2, 0], [3, 0], [0, 2], [2, 2], [5, 1], [5, 2], [2, 4], [4, 4], [5, 5]])
y_1 = np.array([-1, -1, -1, -1, -1, +1, +1, +1, +1, +1])
y_2 = np.array([0, 0, 0, 0, 0, +1, +1, +1, +1, +1])

sns.scatterplot(x[:,1],x[:,0], hue=y_1)
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

И получил следующий вывод:

enter image description here

Если вы заметил, что единственная разница между y_1 и y_2 заключается только в изменении числа -1 на 0

И после выполнения того же кода:

sns.scatterplot(x[:,1],x[:,0], hue=y_2)
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

enter image description here

Понятия не имею, почему в первом сюжете есть дополнительная метка 0?

1 Ответ

1 голос
/ 09 апреля 2020

Это действительно известная проблема в seaborn.

Обходной путь ( credit ) заключается в изменении y_1 перед передачей его как hue. Попробуйте:

sns.scatterplot(x[:,1],x[:,0], hue=["$%s$" % x for x in y_1])

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...