如何使用Python Altair将x轴和y轴的交点从0移位到1?

时间:2020-08-04 14:41:58

标签: python altair

我有一个仪表板,您可以在其中使用小部件选择多个数据集。我正在Python中使用Altair库从这些数据集中制作经典的折线图,x轴和y轴均从零开始。显示的数据是归一化的数据,这意味着所有数据集按定义从y值= 1开始。由于数据集表示不同的参数,因此y轴在数据集之间动态变化。该图的编码大致如下:

chart = alt.Chart(df_datapoints).mark_line().encode(
        x=alt.X('X-Value',axis=alt.Axis(title='X-Values', tickCount=10)),
        y=alt.Y('Y-Value', axis=alt.Axis(title='Normalized to Baseline')),
        color=alt.Color('Test ID', legend=None)
        )

图形如下所示:

enter image description here

现在,我希望x轴从y-value = 1开始,以便更好地查看哪些值从起点开始增加或减少。是否可以将这个简单的折线图中的x轴起点从零移动到1? 我没有在Altair文档中找到任何东西。 还是可以在Y = 1处添加一条强线以查看标准化的基线?

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用axis.offset属性,该属性控制像素的轴偏移。如果要使轴在特定数据点处相交,则必须根据数据范围进行调整:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'x': [0, 1, 2, 3, 4],
    'y': [0, 1, 2, 3, 4],
})

alt.Chart(df).mark_line().encode(
  x=alt.X('x', axis=alt.Axis(grid=False, offset=-75)),
  y=alt.Y('y', axis=alt.Axis(grid=False, offset=-100))
)

enter image description here