[英]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:
但是,這有很多冗余的標簽和信息。 理想情況下,我想要一個 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.