Altair 图表上方的动态文本

2023-12-29

在下面代码生成的图表中,用户可以将鼠标悬停在线段上以在图表上显示一个点,并且该点的信息显示在图表上方。

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

df = pd.DataFrame({'x': np.linspace(0, 4, 1000)})
# df['y'] = np.sin(2 * np.pi * df['x'])
df['y'] = 1.9 * df['x']

select_point = alt.selection_single(fields=('x',), nearest=True, on='mouseover', empty='none')
line = alt.Chart(df).mark_line().encode(
    x='x:Q',
    y='y:Q',
)
points = line.mark_point(filled=True, size=100).encode(
    opacity=alt.condition(select_point, alt.value(1.0), alt.value(0.0)),
).add_selection(select_point)
texts = alt.Chart(df, width=600, height=400).mark_text(
    align='left', baseline='bottom', dx=+5, dy=-5, fontSize=12,
).encode(
    x=alt.value(0.0),
    y=alt.value(df['y'].max()),
    text='_label:N',
    opacity=alt.condition(select_point, alt.value(1.0), alt.value(0.0)),
).transform_calculate(
    _label='"x = " + format(datum.x, ".2f") + ", y = " + format(datum.y, ".2f")',
)
alt.layer(line, points, texts)

有代码可以绘制正弦曲线和直线,尽管绘制正弦曲线的代码已被注释掉。当我运行脚本来显示正弦曲线时,我得到以下结果。

当我运行脚本来显示该行时,我得到以下内容。

我认为正弦曲线图上的标签文本恰到好处。但是,线条图上的标签文本距离图表顶部太近。有没有办法使标签文本始终偏离图表其余部分的顶部?


Altair 秤具有domain and a range。域是指数据的范围,范围是指视觉尺度的范围。

如果是x and y编码,范围以像素为单位从图表左侧开始测量(对于x)并从图表顶部开始(对于y)。设置编码value 总是指范围,而不是域.

因此,如果您希望文本显示在特定位置(无论数据集如何),请勿将文本范围位置与数据集中的值联系起来。例如,您可以这样做:

y=alt.value(-1)

并删除dy从您的标记属性进行设置。这将指定您希望文本基线位于 y 轴顶部上方 1 像素处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Altair 图表上方的动态文本 的相关文章

随机推荐

  • 如何获取字符串最后一次出现的位置?

    我有一个函数可以提取 string 内 start 和 end 之间的内容 function get string between string start end string string ini strpos string start
  • 将指针传递给函数并修改它

    stackoverflow 和 C C 的新手 我正在努力实现二叉树并有一个简单的问题 可以说我有以下内容 struct Node int data Node right child Node left child void addNode
  • Java 8 函数接口对象的 Java Hashcode 和 Equals

    我有一些代码如下所示 import java util ArrayList import java util List import java util function Function class MyObj private final
  • 如何将 sp_executesql 结果放入变量中?

    我需要执行一段动态 SQL 然后需要将结果存储到变量中 我知道我可以使用sp executesql但找不到有关如何执行此操作的明确示例 如果你有 OUTPUT 参数 你可以这样做 DECLARE retval int DECLARE sSQ
  • Reveal.js HTML 代码语法高亮显示而不渲染

    针对 Reveal js 用户的问题 我试图在 Reveal js 演示文稿中显示 HTML 标记 问题是它在我的代码语法突出显示块中呈现 html 块 因此看不到标记 有没有解决的办法 下面的例子 section h2 Pretty Co
  • 将 import() 转换为同步

    我正在尝试转换我的所有节点require 进入import 然而 这些语句是异步的 我遇到了一些麻烦 现在我有 import as fs from fs const paths fs readdirSync src modules map
  • 将 Column(str) 转换为 (Float) ,ValueError: 无法将字符串转换为 float: 'Null'

    对不起 各位 我知道这个问题之前已经被回答过 我尝试了所有答案 也进行了研究 并尝试了不同的事情 4 个小时 我无法完成 我相信我的数据有一些奇怪的东西 所以按照我的数据和我的尝试 x pd DataFrame Cost 83 534625
  • 在膨胀布局中使用 setText() 到 TextView() 后,文本不显示

    是的 我知道以前有人问过类似的问题 但我尝试了很多 所以我在膨胀布局中的 TextView 中设置文本时遇到问题 我尝试了 setContentView 然后它可以工作 但是带有菜单的 Activity main xml 无法工作 所以我尝
  • Google AdSense 的 400 错误请求

    我正在运行一个使用 AJAX 请求和 History pushState 进行导航的网站 请求的内容代码包含Google的异步AdSense代码
  • ^= 32 将小写字母转换为大写字母,反之亦然,背后的想法是什么?

    我正在解决 codeforces 上的一些问题 通常我首先检查字符是大写还是小写英文字母 然后减去或添加32将其转换为相应的字母 但我发现有人这么做 32做同样的事情 这里是 char foo a foo 32 char bar A bar
  • 什么是可组合运行时类?

    我正在尝试使用 C WinRT 创建一个简单的 xaml 应用程序 我有 WPF 背景 拥有一个基类是很常见的 实现 INotifyPropertyChanged 并让其他类继承它 当我尝试对 C WinRT 执行相同操作时 我失败并出现错
  • 面向列的数据库与面向行的数据库

    我已经使用了很长时间的面向行的数据库设计 除了数据仓库项目和大数据示例之外 我还没有在 OLTP 应用程序中使用面向列的数据库设计 我的面向行的表看起来像 ID Make Model Month Miles Cost 1 BMW Z3 12
  • 如何跳出多个循环?

    给出以下代码 不起作用 while True Snip print out current state while True ok get input Is this ok y n if ok lower y break 2 This do
  • 从 Visual Studio 2019 将 ASP.NET Core 3.1 站点发布到 Azure 时出错

    我有一个预先存在的ASP NET 核心 3 0应用程序已成功部署到Azure 应用服务 使用AspNetCoreModuleV2模块 将应用程序升级到 今天发布的 后ASP NET 核心 3 1 应用程序在我的本地版本上正确构建并运行IIS
  • 从配置中读取 Azure 函数设置

    我使用带有属性的 Azure Functions 来定义功能 public static class PostPublishTimerTrigger FunctionName PostPublishTimerTrigger public s
  • 类型错误:createSlice 不是 vitest 中的函数

    我正在构建一个 tic tac toe 游戏 与 redux 进行反应 并尝试使用 vitest 进行测试 我已经设置了板片和商店 但是当尝试运行我的第一个测试时 我收到以下错误 Failed Suites 1 FAIL src slice
  • 将 NSArray 复制到空 NSArray 中

    我有第一个 NSArrayfirstArray我做 firstArray removeAllObjects 当我想用另一个数组的内容填充它之后secondArray 这样写对吗 firstArray secondArray No first
  • Haskell 中的素筛

    我对 Haskell 很陌生 我只是想找到前 200 万个素数的总和 我正在尝试使用筛子生成素数 我认为埃拉托色尼筛子 但它真的很慢 我不知道为什么 这是我的代码 sieve x xs x sieve filter a gt a mod x
  • 使用entityManager.createNativeQuery(query,foo.class)

    我想从 a 返回一个整数列表 javax persistence EntityManager createNativeQuery call 为什么下面的说法是错误的 entityManager createNativeQuery Selec
  • Altair 图表上方的动态文本

    在下面代码生成的图表中 用户可以将鼠标悬停在线段上以在图表上显示一个点 并且该点的信息显示在图表上方 import altair as alt import numpy as np import pandas as pd df pd Dat