python - 如何根据 Holoviews 中数据框的顺序/索引设置条形的顺序
问题描述
我正面临这个问题,HOLOVIEWS
因为我无法像我的df
. 我也尝试了很多方法order
,sort
但都失败了。显示的图像与预期的顺序完全相反。
df = pd.DataFrame({
"set": list("ABABCCAD"),
"flag": list("YYNNNYNY"),
"id": list("DEFGHIJK"),
})
df["set"] = df["set"].map(
{"A": "APPLE",
"B": "BALL",
"C": "CAT",
"D": "DOG"
}
)
这是结果df
:-
set flag id
0 APPLE N 2
1 APPLE Y 1
2 BALL N 1
3 BALL Y 1
4 CAT N 1
5 CAT Y 1
6 DOG Y 1
我希望我的图像与此顺序相同df
def hook1(plot, element):
plot.state.y_range.range_padding = 0.1
plot.state.text(
y="xoffsets",
x="id",
text="id",
source=plot.handles["source"],
text_align="left",
y_offset=10,
x_offset=5
)
df= df.groupby(["set", "flag"])["id"].count().reset_index()
count_bars = hv.Bars(df, kdims=["set","flag"], vdims="id")
plot = (
count_bars.opts(hooks=[hook1],
title="IDs",invert_axes=True, width=500, padding=2))
bokeh_obj = hv.render(plot, backend="bokeh")
show(bokeh_obj)
我不希望这样,我希望顺序与我的数据框的顺序相同:- APPLE
- N
,,Y
然后 BALL
N
,Y
..(从上到下)。等等。我也不想要对要排序的变量进行编码,因为我有df
很多sets
,而且很难在代码中给出要排序的变量名称,而且如果我要创建一个也没有意义function
解决方案
如果要对外部索引进行排序,可以.sort(dimension, reverse=True)
在hv.Bars
对象上使用。但是,对内部索引进行排序将需要您明确设置维度值:
from bokeh.io import show
import holoviews as hv
hv.extension("bokeh")
df = df.groupby(["set", "flag"])["id"].count().reset_index()
count_bars = hv.Bars(df, kdims=["set","flag"], vdims="id")
plot = (count_bars
.opts(hooks=[hook1], title="IDs",invert_axes=True, width=500, padding=2)
.redim.values(flag=["Y", "N"]) # Inverting the axes flips this order. This produces N, Y vertically
.sort("set", reverse=True)
)
bokeh_obj = hv.render(plot, backend="bokeh")
show(bokeh_obj)
推荐阅读
- laravel - Laravel isDirty 方法批量赋值
- neural-network - 如何使用神经网络减少张量的维数
- django - django CBV 中的 extra_context 和 get_context_data(**kwargs) 有什么区别
- python - Python 函数内部的导入语句
- javascript - 如何创建基于以“_”开头的属性名称将所有类属性设置为不可枚举的 Typescript 装饰器?
- scala - ReactiveMongo 无法连接到 ReplicaSet,错误为“无效节点状态 Primary(预期:未知)”
- swift - 使用 SwiftUI 转换视图,而不为整个视图设置动画
- regex - 当整行不重复时,使用 REGEX 删除重复项
- amazon-web-services - 启动 Amazon EC2 Spot 实例以编程方式运行 docker 映像
- java - Spring数据将所有关联资源反序列化为_embedded