在 Altair 中仅显示特定方面 Python

Show only specific facet in Altair Python

使用 Altair 我只想为给定的方面绘制特定的图。例如,使用 Vega 数据集,我想只为欧洲绘制汽车。我知道如何使用 facet 将 3 个图分开,但还没有弄清楚如何只显示一个图。

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']
)

chart.facet(row='Origin')

这导致欧洲、日本和美国的 3 行绘图。我将如何只显示其中一个或三个中的两个?

您可以使用 filter transform 来限制图表中显示的数据。例如,这将分面限制为美国和欧洲:

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(
    (alt.datum.Origin == 'USA') | (alt.datum.Origin == 'Europe')
)
chart.facet(row='Origin')