簡體   English   中英

Altair:如何為軸添加一組固定的標簽

[英]Altair: how to add a fixed set of labels for an axis

我有一個看起來像這樣的數據集:

    position    reputation
0   RW          5
1   ST          5
2   LW          5
3   GK          3
4   LW          4

我現在得到的是一種查看每個 position 中有多少玩家具有特定聲譽的方法,讓用戶 select 具有 slider 的最低聲譽:

slider = pn.widgets.IntSlider(name='Integer Slider', start=1, end=5, step=1, value=3)

@pn.depends(slider.param.value)
def get_plot(min_rep):
     min_reputation = slider.value
     # create filter mask for the dataframe
     mask = (pbp['reputation'] >= min_reputation)
     tmp = pbp.loc[mask] # count of position
     # TODO: make this percent of each position, rather than count
     chart = alt.Chart(tmp).mark_bar().encode(
         x=alt.X('position'), 
         y='count(position)', 
         color=alt.Color('reputation:N')
     )
     return chart

這樣做的問題是,當用戶選擇一個特定的聲譽時,這也會刪除任何沒有超過限制的“聲譽”的記錄,因此我們有不同數量的“位置”我們從數據集中拉出. 這在視覺上有點不和諧,因為圖表完全調整了大小,我花了很長時間試圖弄清楚如何為 X 設置一個固定的值數組,然后計算每個類別中有多少條記錄用於 Y。我我已經研究了變換和過濾器,但還沒有任何運氣。 Altair/Vega 非常受數據驅動,因此我可能不得不將我的數據重組為如下形式:

    position    reputation_5   reputation_4   reputation_3   reputation_2   reputation_1
0   RW          1              10             100            200            1000

我想有一種方法可以告訴 Y 軸計算每個選定的類別,但是找到一種更聰明的方法來做到這一點會很巧妙。 感謝您的任何指點!

嘗試使用.properties(width=200)設置恆定寬度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM