You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PyWaffle图例设置自定义排序?求代码修改方案

PyWaffle 自定义图例排序的实现方法

方法一:提前调整数据源顺序(推荐)

PyWaffle的图例顺序和你传入的labels、values顺序完全对应,所以最直接的方式是先把DataFrame按自定义类别顺序重新排序,再传入参数。

假设你的自定义类别顺序是['类别X', '类别Y', '类别Z'],修改代码如下:

plt.rcParams["figure.figsize"] = [7, 7]
plt.rcParams["figure.autolayout"] = True

# 定义自定义类别顺序
custom_order = ['类别X', '类别Y', '类别Z']
# 按自定义顺序重新排序DataFrame
df_sorted = df.set_index('category').loc[custom_order].reset_index()

fig = plt.figure(
    FigureClass=Waffle,
    rows=10,
    values=df_sorted['values'],
    title={'label': 'Latest data, 2022', 'loc': 'center'},
    labels=list(df_sorted.category),
    legend={'loc': 'lower center','bbox_to_anchor': (.5, -0.1),'ncol': len(df_sorted)},
    starting_location='SE',
    block_arranging_style='snake',
    icons='person', icon_size=32, 
)
plt.show()

方法二:生成图表后修改图例顺序

如果不想改动数据源,可以在生成图表后,获取图例的手柄(handles)和标签(labels),按自定义顺序重新排序后再设置图例:

plt.rcParams["figure.figsize"] = [7, 7]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure(
    FigureClass=Waffle,
    rows=10,
    values=df['values'],
    title={'label': 'Latest data, 2022', 'loc': 'center'},
    labels=list(df.category),
    legend={'loc': 'lower center','bbox_to_anchor': (.5, -0.1),'ncol': len(df)},
    starting_location='SE',
    block_arranging_style='snake',
    icons='person', icon_size=32, 
)

# 定义自定义类别顺序
custom_order = ['类别X', '类别Y', '类别Z']
# 获取当前图例的handles和labels
current_handles, current_labels = fig.axes[0].get_legend_handles_labels()
# 按自定义顺序排序handles和labels
sorted_indices = [current_labels.index(cat) for cat in custom_order]
sorted_handles = [current_handles[i] for i in sorted_indices]
sorted_labels = [current_labels[i] for i in sorted_indices]
# 重新设置图例
fig.axes[0].legend(
    handles=sorted_handles,
    labels=sorted_labels,
    loc='lower center',
    bbox_to_anchor=(.5, -0.1),
    ncol=len(df)
)

plt.show()

注意:方法二中要确保自定义顺序里的类别名称和current_labels完全一致,否则会报错。

内容的提问来源于stack exchange,提问作者epidemiologistseekshelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:42:33