在 Altair 中绘制具有固定值的标尺?
Draw a ruler with a fixed value in Altair?
我想在我的图表中标记一条线,但是当使用 alt.XValue()
指定该数字的值时,该数字与使用该轴的图表不对齐。
import altair as alt
from vega_datasets import data
source = data.barley()
base = alt.Chart(source)
error_bars = base.mark_errorbar(extent='stdev').encode(
x=alt.X('yield:Q', scale=alt.Scale(zero=False)),
y=alt.Y('variety:N')
)
points = base.mark_point(filled=True, color='black').encode(
x=alt.X('yield:Q', aggregate='mean'),
y=alt.Y('variety:N'),
)
base = base.mark_rule(color='red', strokeDash=[4, 2]).encode(
x=alt.XValue(41)
)
error_bars + points + base
任何时候您指定一个编码值,您指定的是一个 range 值,而不是 domain 值。对于位置刻度,范围以屏幕上的像素为单位进行测量,因此 x=alt.XValue(41)
指示图表在距面板左侧 41 像素处绘制一条线。
如果您想指定域值,在当前版本的 Altair 中唯一的方法是通过数据集或计算转换;例如:
base = alt.Chart(
pd.DataFrame({'x':[41]})
).mark_rule(color='red', strokeDash=[4, 2]).encode(
x='x'
)
我想在我的图表中标记一条线,但是当使用 alt.XValue()
指定该数字的值时,该数字与使用该轴的图表不对齐。
import altair as alt
from vega_datasets import data
source = data.barley()
base = alt.Chart(source)
error_bars = base.mark_errorbar(extent='stdev').encode(
x=alt.X('yield:Q', scale=alt.Scale(zero=False)),
y=alt.Y('variety:N')
)
points = base.mark_point(filled=True, color='black').encode(
x=alt.X('yield:Q', aggregate='mean'),
y=alt.Y('variety:N'),
)
base = base.mark_rule(color='red', strokeDash=[4, 2]).encode(
x=alt.XValue(41)
)
error_bars + points + base
任何时候您指定一个编码值,您指定的是一个 range 值,而不是 domain 值。对于位置刻度,范围以屏幕上的像素为单位进行测量,因此 x=alt.XValue(41)
指示图表在距面板左侧 41 像素处绘制一条线。
如果您想指定域值,在当前版本的 Altair 中唯一的方法是通过数据集或计算转换;例如:
base = alt.Chart(
pd.DataFrame({'x':[41]})
).mark_rule(color='red', strokeDash=[4, 2]).encode(
x='x'
)