altair多面直方图-独立标度

时间:2020-03-24 21:40:00

标签: python data-visualization vega vega-lite altair

让我们假设我有一个数据集,变量之间的缩放比例可以完全不同。我想为每个数字变量创建直方图。我试图使x和y比例尺彼此独立,以便这些比例尺不会影响视觉质量。但是即使使用g++ -std=gnu++2a -c main.cpp Any.cpp ,它也只能使y尺度独立,而x在所有变量中仍然很常见。从下图可以看出,可以通过应用代码获得该图。这是所需的行为还是我错过了什么?

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

感谢您的帮助。

版本:python altair 4.0

resolve_scale()
alt.__version__
'4.0.1'

facetted histogram

1 个答案:

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

enter image description here