Altair 层图 Y 轴未解析为相同比例
Altair Layer Chart Y Axis Not Resolving to Same Scale
我正在尝试绘制数据并将其与设置为固定值的阈值进行比较。创建 layer
ed chart, the y axis does not appear to hold for both layers. The same goes for hconcat
.
时
我发现 this issue 提到了 .resolve_scale(y='shared')
,但这似乎不起作用。当我指定规则为 5 时,它出现在 15 以上。
np.random.seed(42)
df = pd.DataFrame({
'x': np.linspace(0, 10, 500),
'y': np.random.randn(500).cumsum()
})
base = alt.Chart(df)
line = base.mark_line().encode(x='x', y='y')
rule = base.mark_rule().encode(y=alt.value(5))
alt.layer(line, rule).resolve_scale(y='shared')
要使规则出现在值 5 处,我必须将其设置为 110。
rule = base.mark_rule().encode(y=alt.value(110))
alt.layer(line, rule).resolve_scale(y='shared')
如何编辑图表以使规则显示在指定的 y 值处?
Altair 比例尺将 域 映射到 范围。 domain 描述了数据值的范围,而 range 描述了这些值映射到的视觉特征的范围。对于颜色编码,范围可能是 "red"
、"blue"
、"green"
等。对于像 x
和 y
这样的位置编码,范围是像素位置图表上的标记。
当您使用 alt.value
时,您指定的是范围值,而不是域值。这就是为什么您可以使用 color=alt.value('red')
之类的编码来指定您希望标记显示为红色的原因。当您执行 y=alt.value(5)
时,您是说您希望标记出现在距 y-axis.
顶部 5 个像素的位置
Vega-Lite 的最新版本添加了通过 datum
而不是 value
指定域值的功能,但不幸的是 Altair 尚不支持此功能,因此唯一的方法是使这项工作成为具有所需值的数据字段。例如:
line = base.mark_line().encode(x='x', y='y')
rule = alt.Chart(pd.DataFrame({'y': [5]})).mark_rule().encode(y='y')
alt.layer(line, rule).resolve_scale(y='shared')
我正在尝试绘制数据并将其与设置为固定值的阈值进行比较。创建 layer
ed chart, the y axis does not appear to hold for both layers. The same goes for hconcat
.
我发现 this issue 提到了 .resolve_scale(y='shared')
,但这似乎不起作用。当我指定规则为 5 时,它出现在 15 以上。
np.random.seed(42)
df = pd.DataFrame({
'x': np.linspace(0, 10, 500),
'y': np.random.randn(500).cumsum()
})
base = alt.Chart(df)
line = base.mark_line().encode(x='x', y='y')
rule = base.mark_rule().encode(y=alt.value(5))
alt.layer(line, rule).resolve_scale(y='shared')
要使规则出现在值 5 处,我必须将其设置为 110。
rule = base.mark_rule().encode(y=alt.value(110))
alt.layer(line, rule).resolve_scale(y='shared')
如何编辑图表以使规则显示在指定的 y 值处?
Altair 比例尺将 域 映射到 范围。 domain 描述了数据值的范围,而 range 描述了这些值映射到的视觉特征的范围。对于颜色编码,范围可能是 "red"
、"blue"
、"green"
等。对于像 x
和 y
这样的位置编码,范围是像素位置图表上的标记。
当您使用 alt.value
时,您指定的是范围值,而不是域值。这就是为什么您可以使用 color=alt.value('red')
之类的编码来指定您希望标记显示为红色的原因。当您执行 y=alt.value(5)
时,您是说您希望标记出现在距 y-axis.
Vega-Lite 的最新版本添加了通过 datum
而不是 value
指定域值的功能,但不幸的是 Altair 尚不支持此功能,因此唯一的方法是使这项工作成为具有所需值的数据字段。例如:
line = base.mark_line().encode(x='x', y='y')
rule = alt.Chart(pd.DataFrame({'y': [5]})).mark_rule().encode(y='y')
alt.layer(line, rule).resolve_scale(y='shared')