簡體   English   中英

在 Altair 中生成“閃避”或“並排”條形圖/柱形圖?

[英]Produce “dodged” or “side-by-side” bar/column charts in Altair?

抱歉,如果之前有人問過這個問題,但我正在尋找一種方法來使用 python 中的 Altair 庫創建“躲避”的條形圖(來自ggplot2語言)。

我知道 Altair 有這個例子

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

這產生了這個 plot:

Altair 劇情

但是,這有很多冗余的標簽和信息。 理想情況下,我想要一個 plot ,其中成對的條形編碼顏色的年份(藍色是 1931 年,橙色是 1932 年),然后是沿 x 軸運行的城市(序數變量)。

很難解釋,但這里有一個如何從 seaborn 獲得這樣的 plot 的示例(使用不同的數據;來源是這個 SO question ):

希伯恩情節

是的,您已經找到了在 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'
)

在此處輸入圖像描述

萬一有人通過谷歌等最終到達這里,這里的代碼可以讓酒吧靠得更近:

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
)

結果:

分組條形圖

感謝 Jake 用他的回答為我指明了正確的方向!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM