Обработка np.nan в графике Plotly - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь воссоздать этот сюжет Seaborn в Plotly: сюжет seaborn .

Мой фрейм данных имеет значения np.nan, а в Plotly линии тренда получаются странными: сюжетный сюжет . Например, красная диаграмма рассеяния показывает настроение персонажа, который появляется позже в телешоу (таким образом, для первых нескольких эпизодов значения в кадре данных равны np.nan). Если вы посмотрите только на красную линию тренда, вы увидите, что она не совпадает с красной диаграммой рассеяния.

enter image description here Если я уберу значения np.nan, проблема исчезнет, ​​но я не хочу этого делать, поскольку хочу, чтобы настроения совпадали с каждым эпизодом на x ось.

Как это исправить? Вот мой код:

 import plotly.express as px
 fig = px.scatter(df, x='episode', y='sentiment', color='character', trendline="lowess")
 fig.show()

РЕДАКТИРОВАТЬ:

Мне предложили решение на форуме Plotly:

# Correct position of x points
for scatter, trendline in zip(fig.data[::2], fig.data[1::2]):
    trendline['x'] = scatter['x'][np.logical_not(np.isnan(scatter['y']))]
fig.show()

Это должно быть исправлено в следующей версии plotly .py.

1 Ответ

0 голосов
/ 05 апреля 2020

Решение:

import plotly.express as px
fig = px.scatter(newdf, x='episode', y='sentiment', color='character', trendline="lowess")

# Correct position of x points
for scatter, trendline in zip(fig.data[::2], fig.data[1::2]):
    trendline['x'] = scatter['x'][np.logical_not(np.isnan(scatter['y']))]
fig.show()

Это должно быть исправлено в следующей версии plotly.py.

...