python - 如何在 altair 中相对于轴定位文本?
问题描述
我正在尝试制作一个非常类似于Multi-Line Tooltip Example的图表。但是我想做两个修改。首先,我希望能够放大数据的一部分。我使用alt.selection(type="interval", encodings=["x"], bind="scales")
和一个 transform_filter 修复了这个问题。到目前为止没有问题。问题是点附近的文本标签重叠,因为线靠得很近。因此,我想将标签移动到沿顶部的轴内的固定位置。是否可以将标签放在轴内的固定位置,即使放大图表(参见下面的模型)?问题是,当您放大 x 和 y 域时,它们都会发生变化,因此标签的位置应该表示为域的一部分。
我可以接受的另一个解决方案是将所选值附加到图例标签或绘图区域之外的其他标签。
解决方案
您可以使用 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
推荐阅读
- r - 根据 R 中两个数据帧中另一列的相等值,在新列(第一个数据帧中)中添加值(来自第二个数据帧)
- javascript - 从另一组对象数组中将属性添加到另一个对象数组
- node.js - 如何使用 nodeJS 显示来自 Firebase 实时数据库的子节点详细信息
- python - mock.call 返回 False 什么时候应该返回 True
- java - Javafx:如何将方法从一个类调用到另一个类?
- ubuntu - !LaTeX 错误:找不到文件“trajan.sty”
- python - 如何杀死由 dotnet run 启动的所有进程?
- python - python lxml获取具有类/ID名称的元素的xpath
- javascript - 为什么jQuery on change事件会多次触发?
- javascript - 在strapi中创建全局变量