指定域从零开始时:
alt.Scale(domain=(0, 1000))
我不明白为什么会这样?以及如何强制它始终准确地从域中提供的值开始?
绘图代码:
data=pd.DataFrame({'foo': {0: 250,
1: 260,
2: 270,
3: 280,
},
'cnt': {0: 6306,
1: 5761,
2: 5286,
3: 4785,
}})
alt.Chart(data).mark_bar().encode(
alt.X(
'foo',
scale=alt.Scale(domain=(0, 1000))
),
alt.Y("cnt")
库版本: altair 3.2.0
答案 0 :(得分:1)
对于条形标记,Vega-Lite自动向域中添加填充(对于其他标记类型则不是这种情况)。即使用户明确指定了域,它也会这样做,这是一个错误;参见vega/vega-lite#5295。
作为解决此错误之前的解决方法,您可以通过设置padding=0
来关闭此行为:
import altair as alt
import pandas as pd
data=pd.DataFrame({
'foo': [250, 260, 270, 280],
'cnt': [6306, 5761, 5286, 4785]
})
alt.Chart(data).mark_bar().encode(
alt.X(
'foo',
scale=alt.Scale(domain=(0, 1000), padding=0)
),
alt.Y("cnt")
)