Python 牵牛星分面直方图-独立尺度
让我们假设我有一个数据集,在这个数据集中,变量之间的比例可以非常不同。我想为每个数值变量创建直方图。我试图使x和y刻度相互独立,这样刻度就不会影响视觉质量。但即使我使用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'
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'
)