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

如何在Altair Python中仅展示指定分面的图表?

仅显示Altair分面图表中的特定分面

嗨,这个问题其实很好解决,咱们可以通过两种实用方式来实现只展示特定分面的需求:

方法一:直接过滤原始数据集

这种方式是在Python层面提前筛选出你需要的数据,再基于筛选后的数据集创建分面图表。

仅显示欧洲地区的数据

import altair as alt
from vega_datasets import data

source = data.cars()
# 筛选出仅属于欧洲的汽车数据
filtered_source = source[source['Origin'] == 'Europe']

chart = alt.Chart(filtered_source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=['Name', 'Origin', 'Horsepower', 'Miles_per_Gallon']
)
chart.facet(row='Origin')

显示欧洲和日本两个地区的数据

如果需要同时展示多个分面,只要调整筛选条件即可:

# 筛选出欧洲和日本的汽车数据
filtered_source = source[source['Origin'].isin(['Europe', 'Japan'])]

方法二:使用Altair的transform_filter转换

这种方式不需要修改原始数据集,而是在图表定义中直接添加过滤规则,更适合需要动态调整过滤条件的场景(比如结合交互式控件)。

仅显示欧洲地区的数据

import altair as alt
from vega_datasets import data

source = data.cars()
chart = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=['Name', 'Origin', 'Horsepower', 'Miles_per_Gallon']
).transform_filter(
    # 指定过滤条件:仅保留Origin为Europe的数据
    alt.datum.Origin == 'Europe'
).facet(row='Origin')

显示欧洲和日本两个地区的数据

用逻辑或运算符|组合多个过滤条件:

.transform_filter(
    (alt.datum.Origin == 'Europe') | (alt.datum.Origin == 'Japan')
)

两种方法各有优势:直接过滤数据集适合数据量较大的场景,能提前减少数据处理量;transform_filter则更灵活,适合需要动态调整筛选规则的交互式图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:43:12