Customizing the order of legends in plotly
You can use traceorder
key for legend:
Determines the order at which the legend items are displayed. If "normal", the items are displayed top-to-bottom in the same order as the input data. If "reversed", the items are displayed in the opposite order as "normal". If "grouped", the items are displayed in groups (when a trace
legendgroup
is provided). if "grouped+reversed", the items are displayed in the opposite order as "grouped".
In your case, you should modify your layout
definition:
layout = go.Layout( barmode='stack', title=f'{measurement}', xaxis=dict( title='Count', dtick=0), yaxis=dict( tickfont=dict( size=10, ), dtick=1), legend={'traceorder':'normal'}))
without traceorder specification
import plotly.graph_objs as gofrom plotly.offline import init_notebook_mode, iplotinit_notebook_mode(connected=True)trace1 = go.Bar(x=['A', 'B', 'C'], y=[20, 14, 23], name='first')trace2 = go.Bar(x=['A', 'B', 'C'], y=[12, 18, 29], name='second')data = [trace1, trace2]layout = go.Layout(barmode='stack',)fig = go.Figure(data=data, layout=layout)iplot(fig, filename='stacked-bar')
with traceorder specification
import plotly.graph_objs as gofrom plotly.offline import init_notebook_mode, iplotinit_notebook_mode(connected=True)trace1 = go.Bar(x=['A', 'B', 'C'], y=[20, 14, 23], name='first')trace2 = go.Bar(x=['A', 'B', 'C'], y=[12, 18, 29], name='second')data = [trace1, trace2]layout = go.Layout(barmode='stack', legend={'traceorder':'normal'})fig = go.Figure(data=data, layout=layout)iplot(fig, filename='stacked-bar')