На графике точки легенды не исчезают после щелчка

Я пытаюсь построить диаграмму рассеяния, используяplotly, где представлены две группы данных (нормальные, аномальные). Проблема заключается в точках легенды: нажатие на «нормальную» легенду правильно фильтрует «нормальную» точку данных на графике, нажатие на «аномальную» с другой стороны не отфильтровывает ее, а просто выделяет точки данных на графике серым цветом. сюжет.

Я не знаю, что вызывает эту ситуацию, но я ожидаю, что график сможет правильно отфильтровать точки данных из легенды:

df['Type'] = 'Normal'
df.loc[df['IFAnomaly'] < 0, 'Type'] = 'Anomalous'

fig = px.scatter(df, x='Raw Data Size', y='IFScores', hover_data = {'Number of Rows': True, 'IFScores': True, 'Total Size': True, 'Adjusted Size': False}, color='Type', color_discrete_map = {'Normal': 'green', 'Anomalous': 'red'}, size='Adjusted Size')
fig.add_trace(px.scatter(df[df['IFAnomaly']==-1], x='Raw Data Size', y='IFScores', hover_data = {'Number of Rows': True, 'IFScores': True, 'Total Size': True, 'Adjusted Size': False},color_discrete_sequence=['red'], size='Adjusted Size').data[0])
fig.update_layout(title='Normal vs. Anomalous data points', xaxis_title='Raw Data Size', yaxis_title='Isolation Forest Scores', legend=dict(traceorder='reversed'))
fig.update_traces(marker=dict(sizemin=3))
fig.update_layout(title='Normal vs. Anomalous data points')
fig.show()
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы используете px.scatter с аргументом color='Type', вы уже добавляете как нормальные, так и аномальные точки. Вам не нужно добавлять еще одну трассировку только аномальных точек, поэтому вы можете избавиться от линии

fig.add_trace(px.scatter(...))

Следующее должно работать как положено:

df['Type'] = 'Normal'
df.loc[df['IFAnomaly'] < 0, 'Type'] = 'Anomalous'

fig = px.scatter(df, x='Raw Data Size', y='IFScores', hover_data = {'Number of Rows': True, 'IFScores': True, 'Total Size': True, 'Adjusted Size': False}, color='Type', color_discrete_map = {'Normal': 'green', 'Anomalous': 'red'}, size='Adjusted Size')
fig.update_layout(title='Normal vs. Anomalous data points', xaxis_title='Raw Data Size', yaxis_title='Isolation Forest Scores', legend=dict(traceorder='reversed'))
fig.update_traces(marker=dict(sizemin=3))
fig.update_layout(title='Normal vs. Anomalous data points')
fig.show()

Другие вопросы по теме