如何在Altair折线图中正确绘制y=0位置的水平线
解决Altair折线图中y=0水平线位置错误的问题
你当前代码里用alt.value(0)指定的是画布像素坐标的0点(Altair画布左上角为像素原点),所以线条会出现在图表顶部。要让线条对应数据域的y=0位置,需要改用alt.datum(0)来绑定数据值。
修正后的代码
# 添加y=0水平线以清晰区分正负值 y_zero = alt.Chart().mark_rule().encode( y=alt.datum(0), # 改用datum绑定数据维度的0值 color=alt.value('black'), size=alt.value(10), )
关键区别说明
alt.datum(0):直接关联数据中的数值0,Altair会根据图表y轴的刻度范围,自动将线条定位到数据对应的y=0位置。alt.value(xxx):仅指定画布的绝对像素位置,和数据本身的数值范围无关,这也是你之前线条出现在顶部的原因。
最后将这条水平线与你的主折线图叠加即可(比如主折线图对象 + y_zero)。
内容的提问来源于stack exchange,提问作者luukburger
相关产品推荐
相关产品推荐

