亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據 Holoviews 中數據幀的順序/索引設置條形的順序

如何根據 Holoviews 中數據幀的順序/索引設置條形的順序

小唯快跑啊 2023-10-31 14:04:04
我面臨這個問題,因為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  id0   APPLE   N   21   APPLE   Y   12   BALL    N   13   BALL    Y   14   CAT     N   15   CAT     Y   16   DOG     Y   1我希望我的圖像的順序與此相同dfdef 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
查看完整描述

2 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

如果你想對外部索引進行排序,你可以.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)

生產:

https://img1.sycdn.imooc.com/654098ff0001c6b206440376.jpg

查看完整回答
反對 回復 2023-10-31
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

作為快速修復/解決方法,我已將索引反轉為按 的順序出現df,但我認為這應該在holoviews將來修復


    df['indexn'] = df.index

    df.indexn = df.indexn.values[::-1]

    order = df.sort_values(by='indexn').set

    order1 = df.sort_values(by='indexn').flag

    count_bars = hv.Bars(df, kdims=["set","flag"], vdims="id").redim.values(set=order,flag=order1)



查看完整回答
反對 回復 2023-10-31
  • 2 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號