nilsinelabore
nilsinelabore

Reputation: 5135

Plotly: Interactive graph with 'lines+markers' mode using plotly.express

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 

I want to plot an interactive graph using plotly.express, colour by Start(which is dummy variable), with mode='lines+markers'. But I couldn't add the line. At the moment, using code below

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()

I obtained plot enter image description here


Update:

Tried:

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'])

which returned: enter image description here

Upvotes: 0

Views: 2530

Answers (1)

user11989081
user11989081

Reputation: 8663

The issue is that in your code the figure object is being overwritten, i.e. the scatter plot is replacing the line plot rather than being added to it.

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

Upvotes: 2

Related Questions