簡體   English   中英

Altair 多面直方圖 - 獨立尺度

[英]altair faceted histogram - independent scales

假設我有一個數據集,其中變量的縮放比例可以完全不同。 我想為每個數字變量創建直方圖。 我試圖使 x 和 y 尺度彼此獨立,以便尺度不會影響視覺質量。 但即使我使用resolve_scale()它也只會使 y 尺度獨立,而 x 在所有變量中仍然很常見。 這可以從下圖看出,可以通過應用代碼獲得。 這是所需的行為還是我錯過了什么?

我的問題是:
1. 如何使 x 比例獨立?
2. 如何讓標題更貼近劇情?

謝謝你的幫助。

版本:python altair 4.0

alt.__version__
'4.0.1'
import altair as alt

data = alt.datasets.load_dataset('flights-2k')
chosen_origin_airports = data.groupby('origin').size().sort_values(ascending=False).head(12).index.tolist()
data = data[data.origin.isin(chosen_origin_airports)]
data.loc[data.origin=='BWI', 'delay']  = data.loc[data.origin=='BWI', 'delay'] * (10000)

alt.Chart(data=data).mark_bar().encode(
    x = alt.X('delay:Q', 
              axis=alt.Axis(title=''), 
              scale=alt.Scale(zero=False),
              bin=alt.Bin(maxbins=20)),
    y = alt.Y('count():Q', 
              axis=alt.Axis(title='')),
    color = alt.Color('origin:N')
).properties(
    width=130,
    height=130
).facet(
    alt.Column('origin:N', sort = alt.EncodingSortField(order=None)),
    align= 'all',
    padding=0,
    columns=4,
    spacing=0
).properties(
    title=''
).configure_title(
    fontSize=20,
    font='Courier',
    anchor='middle',
    color='gray',
    align='left'
).configure_header(
    title=None,
    titleColor='green',
    titleFontSize=14,
    labelColor='forestgreen',
    labelFontSize=14
).resolve_axis(
    x='independent',
    y='independent'
).resolve_scale(
    x='independent', 
    y='independent'
)

分面直方圖

你的尺度是獨立的,但你的分檔不是。 不幸的是,Vega-Lite 語法沒有提供簡單的方法來定義將不同的 bin 參數應用於不同數據子集的 bin 變換,因此您必須手動為圖表的每個面板使用不同的 bin 變換。

我可能會做這樣的事情:

chart = alt.Chart(data).mark_bar().encode(
    x = alt.X('delay:Q', 
              axis=alt.Axis(title=''), 
              scale=alt.Scale(zero=False),
              bin=alt.Bin(maxbins=20)),
    y = alt.Y('count():Q', 
              axis=alt.Axis(title='')),
    color = alt.Color('origin:N')
).properties(
    width=130,
    height=130
)

alt.ConcatChart(
    concat=[
      chart.transform_filter(alt.datum.origin == value).properties(title=value)
      for value in sorted(data.origin.unique())
    ],
    columns=4
).configure_title(
    fontSize=20,
    font='Courier',
    anchor='middle',
    color='gray',
    align='left'
).resolve_axis(
    x='independent',
    y='independent'
).resolve_scale(
    x='independent', 
    y='independent'
)

在此處輸入圖片說明

暫無
暫無

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

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