在 Altair 中生成 "dodged" 或 "side-by-side" bar/column 图表?

Produce "dodged" or "side-by-side" bar/column charts in Altair?

抱歉,如果之前有人问过这个问题,但我正在寻找一种使用 Altair 库创建 "dodged"(language 来自 ggplot2)条形图的方法在 python。

我知道 Altair this example:

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    x='year:O',
    y='sum(yield):Q',
    color='year:N',
    column='site:N'
)

产生这个情节:

但是,这有很多多余的标签和信息。理想情况下,我想要一个图,其中成对的条形图用颜色编码年份(蓝色是 1931 年,橙色是 1932 年),然后是城市 运行 沿 x 轴(序数变量)。

很难解释,但这里有一个示例,说明如何从 seaborn 获取这样的图(使用不同的数据;来源是):

是的,您已经找到在 Altair 中创建分组条形图的推荐方法。如果你想调整图表的最终外观,你可以做一些事情,比如删除和重新排列标签和标题;以下是您可以如何修改示例以使其更接近 seaborn 图表:

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    x=alt.X('year:O', axis=alt.Axis(title=None, labels=False, ticks=False)),
    y=alt.Y('sum(yield):Q', axis=alt.Axis(grid=False)),
    color='year:N',
    column=alt.Column('site:N', header=alt.Header(title=None, labelOrient='bottom'))
).configure_view(
    stroke='transparent'
)

万一有人通过 google 等到达这里,这里是将条形图拉近的代码:

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    alt.X('year:O', axis=None),#axis=alt.Axis(title=None, labels=False, ticks=False)),
    alt.Y('sum(yield):Q', axis=alt.Axis(grid=True)),
    alt.Facet('site:N',title="Facet title Here",),
    color='year:N',
).properties(height=150, width=80).configure_view(
    stroke='transparent'
).configure_scale(bandPaddingInner=0,
                  bandPaddingOuter=0.1,
).configure_header(labelOrient='bottom',
                   labelPadding = 3).configure_facet(spacing=5
)

结果:

感谢杰克用他的回答为我指明了正确的方向!