Reputation: 5135
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()
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'])
Upvotes: 0
Views: 2530
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()
Upvotes: 2