0

我有一个看起来像这样的数据集:

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

我现在得到的是一种查看每个位置有多少玩家具有特定声誉的方法,让用户使用滑块选择最低声誉:

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 轴计算每个选定的类别,但是找到一种更聪明的方法来做到这一点会很巧妙。感谢您的任何指点!

4

1 回答 1

1

尝试设置一个恒定的宽度.properties(width=200)

于 2021-02-15T01:58:23.567 回答