Построить интерактивный график в режиме «линии + маркеры», используя график. express - PullRequest
0 голосов
/ 22 апреля 2020

df:

                        id      timestamp               data    Date            Start   
timestamp                                   
2020-01-15 06:12:49.213 40250   2020-01-15 06:12:49.213 20.0    2020-01-15      NaN 
2020-01-15 06:12:49.313 40251   2020-01-15 06:12:49.313 19.5    2020-01-15      0.0 
2020-01-15 08:05:10.083 40256   2020-01-15 08:05:10.083 20.0    2020-01-15      1.0 
2020-01-15 08:05:10.183 40257   2020-01-15 08:05:10.183 20.5    2020-01-15      0.0 
2020-01-15 09:01:50.993 40310   2020-01-15 09:01:50.993 21.0    2020-01-15      0.0 
2020-01-15 09:01:51.093 40311   2020-01-15 09:01:51.093 21.5    2020-01-15      0.0 
2020-01-15 09:51:01.890 40336   2020-01-15 09:51:01.890 22.0    2020-01-15      0.0 

Я хочу построить интерактивный график, используя plotly.express, цвет Start (который является фиктивной переменной), с mode='lines+markers'. Но я не мог добавить строку. На данный момент, используя код ниже

import plotly.express as px

fig = px.line(df, x="timestamp", y="data", title='xxx')
fig = px.scatter(df, x="timestamp", y="data",color='Start')   
fig.show()

Я получил участок enter image description here


Обновление:

Попытка:

import plotly.express as px

fig = px.line(x=df['timestamp'], y=df['data'])
fig.add_scatter(x=df['timestamp'], y=df['data'], marker_color=df['Start'])

, который возвратил: enter image description here

1 Ответ

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

Проблема в том, что в вашем коде объект фигуры перезаписывается, то есть точечный график заменяет линейный график, а не добавляется к нему.

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'timestamp': ['2020-01-15 06:12:49.213', '2020-01-15 06:12:49.313', '2020-01-15 08:05:10.083', '2020-01-15 08:05:10.183',
                                 '2020-01-15 09:01:50.993', '2020-01-15 09:01:51.093', '2020-01-15 09:51:01.890'],
                   'data': [20.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0],
                   'start': [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]})


fig = px.line(x=df['timestamp'], y=df['data'])
fig.add_scatter(x=df['timestamp'], y=df['data'], mode='markers', marker_color=df['start'], marker_size=10)

fig.update_layout(plot_bgcolor='#bababa', showlegend=False)

fig.show()

enter image description here

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