I'm trying to add my hline to the legend and label it as 'mean'. Is this possible and if so how.
Example
import numpy as np
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'day': np.repeat(np.arange(1, 11, 1), 2),
'value': np.repeat([1, 2, 3, 4, 5], 4),
'var': list(['A', 'B']) * 10})
fig = px.bar(df,
x='day',
y='value',
color='var')
fig.add_hline(y=df['value'].mean(), line_dash="dot")
fig.show()
You can use the annotation_text
parameter in fig.add_hline
:
fig.add_hline(y=df['value'].mean(), line_dash="dot", annotation_text="mean")
That would add a text right above the dotted line:
However, the text will not be right under the "Var" section.
In order to do this, you will need to change it from add_hline
to add_trace
as it is not subject to the legend:
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
df = pd.DataFrame({'day': np.repeat(np.arange(1, 11, 1), 2),
'value': np.repeat([1, 2, 3, 4, 5], 4),
'var': list(['A', 'B']) * 10})
fig = px.bar(df,
x='day',
y='value',
color='var')
fig.add_trace(go.Scatter(
x=df['day'],
y=[df['value'].mean()] * len(df['day']),
mode='lines',
name='mean',
line=dict(dash='dot', width=2, color='black'),
))
fig.show()
Which results in this figure: