在Altair中生成“闪避”或“并排”的条形图/柱形图?

时间:2019-10-30 03:08:02

标签: python altair

很抱歉,是否曾经有人问过这个问题,但是我正在寻找一种使用python中的Altair库创建“躲避”(ggplot2中的language)条形图的方法。

我知道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'
)

这将产生以下情节:

Altair Plot

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

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

Seaborn Plot

2 个答案:

答案 0 :(得分:2)

是的,您已经找到了在Altair中创建分组条形图的推荐方法。如果要调整图表的最终外观,可以执行以下操作:删除和重新排列标签和标题;您可以按照以下方法修改示例,使其更接近海洋图:

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

enter image description here

答案 1 :(得分:0)

如果有人最终通过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
)

结果:

Grouped Bar chart

感谢杰克(Jake)的回答将我指向正确的方向!