如何在Altair中相对于轴放置文本?

时间:2019-07-30 13:15:06

标签: python altair

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

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

模拟完整视图: Full view

模拟缩放视图: Zoomed view

1 个答案:

答案 0 :(得分:0)

您可以使用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

enter image description here