轴的域未完全定义图表的呈现方式

时间:2019-08-12 13:12:55

标签: altair

指定域从零开始时:

alt.Scale(domain=(0, 1000))

我仍然在X轴上获得带有负值的图: enter image description here

我不明白为什么会这样?以及如何强制它始终准确地从域中提供的值开始?

绘图代码:

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

1 个答案:

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

enter image description here