首页 > 解决方案 > 如何在 altair 中相对于轴定位文本?

问题描述

我正在尝试制作一个非常类似于Multi-Line Tooltip Example的图表。但是我想做两个修改。首先,我希望能够放大数据的一部分。我使用alt.selection(type="interval", encodings=["x"], bind="scales")和一个 transform_filter 修复了这个问题。到目前为止没有问题。问题是点附近的文本标签重叠,因为线靠得很近。因此,我想将标签移动到沿顶部的轴内的固定位置。是否可以将标签放在轴内的固定位置,即使放大图表(参见下面的模型)?问题是,当您放大 x 和 y 域时,它们都会发生变化,因此标签的位置应该表示为域的一部分。

我可以接受的另一个解决方案是将所选值附加到图例标签或绘图区域之外的其他标签。

模拟全视图: 全视图

放大视图的模型: 缩放视图

标签: pythonaltair

解决方案


您可以使用 x 和 y 编码控制文本位置。这是将文本放置在轴顶部的示例:

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

data = pd.DataFrame({
    'x': np.arange(1, 21),
    'y': np.random.randint(0, 20, 20),
})

points = alt.Chart(data).mark_point().encode(
    x='x',
    y='y'
)

text = points.mark_text(baseline='top').encode(
    y=alt.value(0),  # pixels from top
    text='y'
)

points + text

在此处输入图像描述


推荐阅读