Python 牵牛星分面直方图-独立尺度

Python 牵牛星分面直方图-独立尺度,python,data-visualization,vega,vega-lite,altair,Python,Data Visualization,Vega,Vega Lite,Altair,让我们假设我有一个数据集,在这个数据集中,变量之间的比例可以非常不同。我想为每个数值变量创建直方图。我试图使x和y刻度相互独立,这样刻度就不会影响视觉质量。但即使我使用resolve_scale()它也只会使y尺度独立,而x在所有变量中仍然是常见的。这可以从下图中看出,下图可以通过应用代码获得。这是我想要的行为还是我遗漏了什么 我的问题是: 1.如何使x比例独立? 2.如何使标题更接近情节 谢谢你的帮助 版本:python altair 4.0 alt.__version__ '4.0.1'

让我们假设我有一个数据集,在这个数据集中,变量之间的比例可以非常不同。我想为每个数值变量创建直方图。我试图使x和y刻度相互独立,这样刻度就不会影响视觉质量。但即使我使用
resolve_scale()
它也只会使y尺度独立,而x在所有变量中仍然是常见的。这可以从下图中看出,下图可以通过应用代码获得。这是我想要的行为还是我遗漏了什么

我的问题是:
1.如何使x比例独立?
2.如何使标题更接近情节

谢谢你的帮助

版本:python altair 4.0

alt.__version__
'4.0.1'

你的天平是独立的,但你的天平不是。不幸的是,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'
)

哦,天哪,这真的很难。我们如何向上或向下移动每个子批次的标题?此外,我们如何将箱子数量固定在20个?控制自动装箱的旋钮如下所示:。您可以指定maxbins,但如果不为每个数据集指定明确的范围和步骤,就无法指定确切的bins数(在自动Binning中,vega lite优先考虑具有敏感的bin边而不是精确的bin数),谢谢您的帮助Jake。我喜欢牵牛星顺便说一句,它看起来很整洁。潜力很大。
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'
)