如何自定义图例顺序?
How to customize plotly legend order?
我想将箱线图中图例的顺序从 1-12 更改,或者甚至将它们重命名为一月、二月等。知道我该怎么做吗?
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()
px.box
正在按照读取您的 DataFrame df
的顺序绘制您的数据,因此您可以将排序后的 DataFrame 传递给 px.box:
fig = px.box(data.sort_values(by=['month']),
x= xdata,
y= ydata,
color= xdata)
如果您想要月份的名称,您可以通过将 'month'
列映射到其各自的缩写(例如 'Jan', 'Feb',...
:
来在 DataFrame 中创建一个新列
import calendar
df['month_name'] = df['month'].apply(lambda x: calendar.month_abbr[x])
然后将 'month_name'
而不是 'month'
传递给您的 make_box_plot
函数应该创建一个图表,其中 month_name 作为图例条目:
make_box_plot(df, 'month_name', 'Sales', 'Cool Title', True)
我想将箱线图中图例的顺序从 1-12 更改,或者甚至将它们重命名为一月、二月等。知道我该怎么做吗?
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()
px.box
正在按照读取您的 DataFrame df
的顺序绘制您的数据,因此您可以将排序后的 DataFrame 传递给 px.box:
fig = px.box(data.sort_values(by=['month']),
x= xdata,
y= ydata,
color= xdata)
如果您想要月份的名称,您可以通过将 'month'
列映射到其各自的缩写(例如 'Jan', 'Feb',...
:
import calendar
df['month_name'] = df['month'].apply(lambda x: calendar.month_abbr[x])
然后将 'month_name'
而不是 'month'
传递给您的 make_box_plot
函数应该创建一个图表,其中 month_name 作为图例条目:
make_box_plot(df, 'month_name', 'Sales', 'Cool Title', True)