Reputation: 105
I want to change the ordering of legend in my boxplot from 1-12, or perhaps even renaming them to Jan, Feb, etc. Any idea how could I do it?
def make_box_plot(data, xdata, ydata, title, legend):
fig = px.box(data,
x= xdata,
y= ydata,
color= xdata)
fig.update_layout(
title= title,
xaxis_tickfont_size=14,
xaxis=dict(
title='Date',
),
yaxis=dict(
title='Sales',
titlefont_size=16,
tickfont_size=14,
),
legend=dict(
x=0.995,
y=0.98,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(255, 255, 255, 0)',
traceorder= 'grouped'
),
showlegend= legend
)
fig.show()
Upvotes: 2
Views: 853
Reputation: 19545
px.box
is plotting your data in the order that it's reading through your DataFrame df
, so you can pass a sorted DataFrame to px.box instead:
fig = px.box(data.sort_values(by=['month']),
x= xdata,
y= ydata,
color= xdata)
If you want the names of the months, you can create a new column in your DataFrame by mapping the 'month'
column to its respective abbreviation such as 'Jan', 'Feb',...
:
import calendar
df['month_name'] = df['month'].apply(lambda x: calendar.month_abbr[x])
Then passing 'month_name'
instead of 'month'
to your make_box_plot
function should create a chart with the month_name as legend entries:
make_box_plot(df, 'month_name', 'Sales', 'Cool Title', True)
Upvotes: 1