如何在Altair中绘制两个指定分位数之间的填充区域
Altair绘制两个分位数区间填充的实现方案
可直接运行的完整代码
import altair as alt from vega_datasets import data source = data.cars() # 自定义需要填充的分位数区间边界 lower_quantile = 0.25 upper_quantile = 0.75 base = alt.Chart(source).encode(alt.X("Year:T", title="Year")) base.transform_quantile( "Miles_per_Gallon", probs=[lower_quantile, upper_quantile], groupby=["Year"] # 将分位数长表转为宽表,不同概率的分位值转为独立列 ).transform_pivot( pivot="prob", value="value", groupby=["Year"] ).mark_area(opacity=0.2).encode( alt.Y(f"{lower_quantile}:Q", title="Miles per Gallon"), alt.Y2(f"{upper_quantile}:Q") )
实现说明
- 原代码调用
transform_quantile后输出为长表结构,每个分位数对应独立数据行,因此会生成两个独立的面积图层,各自从X轴延伸到对应分位值,不符合预期 - 通过
transform_pivot转换表结构后,同一年份的两个分位值会被放到同一行的两个独立字段中,即可直接通过Y和Y2参数指定填充区域的上下边界 - 方案支持任意分位数配置,只需修改
lower_quantile和upper_quantile的赋值即可适配不同的区间需求,无需调整其他逻辑
内容的提问来源于stack exchange,提问作者JP-Ellis
相关产品推荐
相关产品推荐

