我正在尝试使用hvplot或holoviews反转堆积条形图中图例项的顺序。在堆积条形图中启用图例会显示与它们堆叠的顺序相反的项。人们希望它们按相同的顺序排列。
似乎在将holoviews绘图渲染为bokeh绘图后,无法使用my_bokeh_plot.legend.items
访问单独的图例项。我只得到一个单独的图例项[LegendItem(id='1374', ...)]
。这意味着我不能使用p.legend[0].items.reverse()
恢复图例项的顺序。我想这是因为hvplot和holoviews使用了bokeh的一种“分组图例”。当使用bokeh作为后端时,如何恢复图例条目的顺序?
这里有一个hvplot示例:
import pandas as pd
import hvplot.pandas
from bokeh.plotting import show
import holoviews as hv
df = pd.DataFrame({
'Type': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
'Fiscal Period': ['2019-01', '2019-01', '2019-02', '2019-02', '2019-01', '2019-01', '2019-02', '2019-02'],
'Request Type': ['S', 'D', 'S', 'D', 'S', 'D', 'S', 'D'],
'values': range(1, 9),
})
layout = df.hvplot.bar(
x='Fiscal Period',
y='values',
by='Request Type',
groupby='Type',
stacked=True,
cmap='Category20',
legend='top_left',
frame_width=200,
).layout()
plotA = layout['A'].opts(title='Type: A')
my_bokeh_plot = hv.render(plotA, backend='bokeh')
my_bokeh_plot.legend[0].items.reverse()
show(my_bokeh_plot)
我找到的相关讨论如下:
https://github.com/bokeh/bokeh/issues/9135