Python 牵牛星:如何为轴添加一组固定的标签
我有一个数据集,看起来是这样的:Python 牵牛星:如何为轴添加一组固定的标签,python,altair,vega-lite,Python,Altair,Vega Lite,我有一个数据集,看起来是这样的: 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,
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在每个类别中有多少记录。我已经深入研究了变换和过滤器,但还没有任何运气。牛郎星/织女星是非常数据驱动的,因此我可能必须将我的数据重组为如下内容:
position reputation_5 reputation_4 reputation_3 reputation_2 reputation_1
0 RW 1 10 100 200 1000
我想有一种方法可以告诉Y轴计算每个选定的类别,但如果能找到一种更聪明的方法,那就太好了。谢谢你的指点 尝试使用
设置恒定宽度。属性(宽度=200)
是否使用设置恒定宽度。属性(宽度=200)
帮助?如果没有,你能提供一个可复制的样本数据吗?可能还有一些正在发生的事情的图像?这会设置图表的属性,但不会设置标签的属性。最后,我创建了一个单独的列,名为position\u name
,并添加了一个转换来使用它:alt.Chart(data).transform\u calculate(position\u name=alt.datum.position\u name)
。我不完全确定它为什么会起作用,但似乎是:)