You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Altair图表默认在左下角的Dropdown filter调整至图表上方

调整Altair下拉筛选控件到图表顶部的解决方案

Altair默认将选择器绑定的输入控件渲染在图表底部,你可以通过以下两种方法将控件调整到顶部:

方法一:全局配置输入控件位置(推荐,适配绝大多数场景)

直接在图表定义末尾添加configure_input配置,指定控件朝向为顶部即可,你可以通过padding参数调整控件和图表主体的间距,修改后的完整代码如下:

import altair as alt
import pandas as pd

lst = [['tom', 25], ['krish', 30],
       ['nick', 26], ['juli', 22]]
    
df = pd.DataFrame(lst, columns =['Name', 'Age'])

name = ['tom', 'krish', 'nick', 'juli']
dropdown = alt.binding_select(options= name)
select = alt.selection_single(fields=['Name'], bind=dropdown, name = 'Selector', init={'Name': name[0]})

chart = alt.Chart(df).mark_bar().encode(
    x = alt.X('Name:N'),
    y = alt.Y('Age:Q'),
).add_selection(
    select
).transform_filter(
    select
).properties(
    width=200,
    height=250
# 新增以下配置项
).configure_input(
    orient='top',
    padding=15 # 可根据需求调整间距大小
)

chart

方法二:分层拼接实现(适合多控件自定义布局场景)

如果你后续需要自定义多个控件的排列方式,可以把选择器绑定到一个透明的空图层,再和主图表纵向拼接,灵活度更高:

import altair as alt
import pandas as pd

lst = [['tom', 25], ['krish', 30],
       ['nick', 26], ['juli', 22]]
    
df = pd.DataFrame(lst, columns =['Name', 'Age'])
name = ['tom', 'krish', 'nick', 'juli']
dropdown = alt.binding_select(options= name)
select = alt.selection_single(fields=['Name'], bind=dropdown, name = 'Selector', init={'Name': name[0]})

# 空图层仅承载下拉控件
input_layer = alt.Chart(df).mark_text(opacity=0).add_selection(
    select
).properties(
    width=200,
    height=10 # 仅保留控件的高度
)

# 主图表无需再绑定选择器
main_chart = alt.Chart(df).mark_bar().encode(
    x = alt.X('Name:N'),
    y = alt.Y('Age:Q'),
).transform_filter(
    select
).properties(
    width=200,
    height=250
)

# 纵向拼接,控件层在上,主图表在下
chart = alt.vconcat(input_layer, main_chart).configure_concat(spacing=0)
chart

内容的提问来源于stack exchange,提问作者jmarsoner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:24:03