【问题标题】:How can I position text relative to axes in altair?如何在 altair 中相对于轴定位文本?
【发布时间】:2019-08-02 16:12:26
【问题描述】:

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

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

完整视图的模型:

放大视图的模型:

【问题讨论】:

标签: python altair


【解决方案1】:

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

【讨论】:

  • 我觉得我解释得不够清楚,所以我用两个预期结果的模型稍微扩展了这个问题。这个答案解释了如何固定 y 位置,而不是 x。
  • 如果您要在已回答问题后大幅更改您的问题,请在以后提出一个新问题。
猜你喜欢
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
相关资源
最近更新 更多