matplotlib 谁能告诉我如何为pywaffle应用图例的自定义排序?

jq6vz3qz  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(117)

我知道pywaffle在 dict 中接受matplotlib.pyplot.legend的参数。我不太了解如何应用这些参数来生成具有自定义类别顺序的图例。
任何人都可以请建议如何更新我的代码应用客户订单我的传奇?

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, 
)
plt.show()

字符串

pdkcd3nj

pdkcd3nj1#

图例将按照给定值和相应标签的顺序创建。创建后,可以使用不同的项目顺序再次创建。
下面是一个例子:

import matplotlib.pyplot as plt
from pywaffle import Waffle

values = [12, 20, 15]
labels = ['twelve', 'twenty', 'fifteen']
legend_dict = {'loc': 'upper center', 'bbox_to_anchor': (.5, -0.01), 'ncol': 3}
fig = plt.figure(
    FigureClass=Waffle,
    rows=10,
    values=values,
    title={'label': 'Latest data, 2022', 'loc': 'center'},
    labels=labels,
    legend=legend_dict,
    starting_location='SE',
    block_arranging_style='snake',
    # icons='person', icon_size=2,
)
handles_dict = {h.get_label(): h for h in fig.axes[0].legend_.legendHandles}
new_label_order = ['fifteen', 'twelve', 'twenty']
new_handles = [handles_dict[lbl] for lbl in new_label_order]
plt.legend(handles=new_handles, **legend_dict)
plt.show()

字符串


的数据

相关问题