altair - 轴域并未准确定义图表的呈现方式
问题描述
指定从零开始的域时:
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
解决方案
对于条形标记,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")
)
推荐阅读
- java - 如何使用字符串变量
- python - 如何让 Google Assistant 使用 Python 脚本从网络获取数据
- scala - 如何在火花中读取工作任务中累加器的值?
- c# - Remove similar Rectangles from a list
- html - 使切换的效果消失
- jhipster - JHipster 在构建生产时产生错误
- css - 背景 url 多张图片
- kubernetes - 我可以在 Docker for Mac 中为 Kubernetes API 使用不安全的端点吗?
- angular - 将参数传递给组件
- angular - NgIf - 更新模型时不显示表行