在最左边的条和 y 轴之间添加填充

Add padding between far left-most bar and y-axis

我想使用 Altair Python 在条形图的 x 轴和 y 轴最左边的条 (A) 之间添加填充。我正在使用 Python V.3.8 和 altair V.4.2.0.

我是 Altair 的新手,所以我正在试验 altair 文档中提供的示例,所以这是他们文档中的示例代码片段 (https://altair-viz.github.io/gallery/simple_bar_chart.html):

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x='a',
    y='b'
)

我想在 x 轴和 y 轴的元素 A 之间添加填充或 space。另外,我想从 x 轴的底部引入填充,这会将所有条形图提升到顶部。

我尝试了以下但没有任何改变:

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x=alt.X("a", axis=alt.Axis(tickSize=7, titlePadding=10, tickColor="black", labelPadding=6, domainWidth=1.7,domainCap="round", domainColor='black')
    y=alt.Y("b", axis=alt.Axis(tickSize=7, titlePadding=10, tickColor="black", labelPadding=6, domainWidth=1.7,domainCap="round", domainColor='black')
)

如何如上所述在两个轴中引入填充?

在此先感谢您。

简单地移动轴可以通过将偏移值添加到预期的值来完成。

import altair as alt
import pandas as pd
import numpy as np

source = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
  x=alt.X('a', axis=alt.Axis(offset=10)),
  y=alt.Y('b', axis=alt.Axis(offset=10))
)

要升图

条的宽度和 y-axis 的范围已调整。

alt.Chart(source).mark_bar(size=10).encode(
  x=alt.X('a', scale=alt.Scale(domainMin=-5, padding=3)),
  y=alt.Y('b', scale=alt.Scale(domainMin=-5, padding=3))
)

您可以使用paddingOuter比例参数:

alt.Chart(source).mark_bar().encode(
    x=alt.X("a", scale=alt.Scale(paddingOuter=0.5)),
    y=alt.Y("b")
)

同样可以通过 .configure_scale 实现,但是 using the encoding as above is the recommended approach in most cases as per the docs:

alt.Chart(source).mark_bar().encode(
    x=alt.X("a"),
    y=alt.Y("b")
).configure_scale(
    bandPaddingOuter=0.5
)