Altair 通过绑定范围滑块对日期时间值进行选择和转换过滤器似乎不适用于相等条件或选择器本身

2024-04-03

我想将范围滑块与日期时间值绑定,以仅过滤图表中特定日期的数据。使用stocks数据,我想要做的是让 x 轴显示公司,y 轴显示用户通过范围滑块选择的特定日期的股票价格。

根据来自的输入这个答案 https://stackoverflow.com/questions/62046930/altair-adding-date-slider-for-interactive-scatter-chart-pot和这个issue https://github.com/altair-viz/altair/issues/2008我有下面的代码显示了一些东西 当滑块在一个特定值之后移动时(不等式条件为transform_filter),但其余部分为空。 奇怪的是,如果我有不等式运算符,那么至少它会显示一些东西,但是当它的时候一切都是空的==.

import altair as alt
from vega_datasets import data

source = data.stocks()

def timestamp(t):
  return pd.to_datetime(t).timestamp()

slider = alt.binding_range(step=86400, min=timestamp(min(source['date'])), max=timestamp(max(source['date']))) #86400 is the difference b/w consequetive days

select_date = alt.selection_single(fields=['date'], bind=slider, init={'date': timestamp(min(source['date']))})

alt.Chart(source).mark_bar().encode(
    x='symbol',
    y='price',
).add_selection(select_date).transform_filter(alt.datum.date == select_date.date)

由于输出为空,我倾向于得出结论:transform_filter这引起了问题,但我已经花了 6 个多小时了,并尝试了使用的所有排列和组合alt.expr.toDate以及到处的其他转换,但我无法让它工作。

也刚刚尝试过transform_filter(select_date.date) and transform_filter(date)和其他东西一起但没有什么效果。

The 预期产出就是说,当用户拖动滑块时,条形高度会发生变化(由于数据按日期过滤).

任何帮助将非常感激。


这里有几个问题:

  • 在 Vega-Lite 中,时间戳以毫秒表示,而不是秒
  • 您正在过滤数字时间戳和日期的字符串表示形式之间的相等性。
  • 即使您解析过滤器表达式中的日期,Python 日期解析和 Javascript 日期解析的行为也不同,结果通常不会匹配。即使在 javascript 中,日期解析行为也可能因浏览器而异;所有这些意味着对 Python 和 Javascript 时间戳的相等性进行过滤通常是有问题的
  • 您使用的数据具有每月时间戳,因此滑块步骤应考虑到这一点

记住所有这些,最好的做法可能是调整滑块值并根据匹配的年份和月份进行过滤,而不是尝试在确切的时间戳中实现相等。结果如下:

import altair as alt
from vega_datasets import data
import pandas as pd

source = data.stocks()

def timestamp(t):
  return pd.to_datetime(t).timestamp() * 1000

slider = alt.binding_range(
    step=30 * 24 * 60 * 60 * 1000, # 30 days in milliseconds
    min=timestamp(min(source['date'])),
    max=timestamp(max(source['date'])))

select_date = alt.selection_single(
    fields=['date'],
    bind=slider,
    init={'date': timestamp(min(source['date']))},
    name='slider')

alt.Chart(source).mark_bar().encode(
    x='symbol',
    y='price',
).add_selection(select_date).transform_filter(
    "(year(datum.date) == year(slider.date[0])) && "
    "(month(datum.date) == month(slider.date[0]))"
)

您可以在此处查看结果:维加编辑器 https://vega.github.io/editor/#/url/vega-lite/N4IgJghgLhIFygK4CcA29zQgegM5QHsBjAa1wDojcA3EAXwBoQBbCZEjAIzZCYFMAdkQJgAlgIDm8UAA9pIKAE8ADnwwCCzcRHRMAZqL6owGXIuacC6RiEXylqjAEdEEAVFEwP1NfsPGMZWRRIjU6G1wjPiIPAgF5XFRRMD5kexU1OBBccQlUXxADIzBceABtTCg1AF0mTnETBBBxZUQoDGQ3CQLWOTgARgAmADYAdgAWAAZ+4cm5uaYteLgATnGVwdHhgA55heyq5XhBgFYNvbmbcU95SCr4NY2t3b3wmyhOgVw9AmRmctABlQVTSWQAFIo+GwwXdEMxyHc+ABKAAEAF40SjIdDEslUgjoHwypNqkjUQAyckosHMOJQAAWMOgcIJVVRGJRtPcjNxKWQrKJJLJ9GqdCAA.

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

Altair 通过绑定范围滑块对日期时间值进行选择和转换过滤器似乎不适用于相等条件或选择器本身 的相关文章

随机推荐

  • 跳进C语言的一个块

    如果我像这个例子一样跳进一个块 跳过 声明 include
  • 找到 2 个 java.sql.Timestamps 之间的小时或分钟差异?

    我存储一个java sql Timestamp in a PostgreSQL数据库为时间戳数据类型 我想找出数据库中存储的数据类型与当前数据类型之间的差异 以分钟或小时为单位 时间戳 这样做的最佳方法是什么 是否有内置方法 或者我必须将其
  • 文本背景颜色溢出

    我将背景颜色应用于国家 地区列表中的链接 总体来说效果很好 然而 对于名称较长的国家来说 它的效果不太好 我试图让黄色溢出一切并清楚地显示国家的全名 HTML div class flagList div class flagColumn
  • Jade 模板布局无法与 Node.js 结合使用

    我正在尝试在 Node js 中创建一个使用 Jade 模板和布局的简单服务器 由于某种原因 它只会加载模板而不加载布局 这是我所得到的 main js var express require express var app express
  • 如何正确使用Feature2D(如SimpleBlobDetector)? (Python + OpenCV)

    我正在尝试使用一些简单的代码运行斑点检测 img cv2 imread args image height width channels img shape params cv2 SimpleBlobDetector Params para
  • 如何绘制样本的 PMF?

    是否有任何函数或库可以帮助我绘制样本的概率质量函数 就像绘制样本的概率密度函数一样 例如 使用 pandas 绘制 PDF 就像调用以下命令一样简单 sample plot kind density 如果没有简单的方法 我如何计算 PMF
  • 有人知道 10 位原始 RGB 吗?关于全视

    我正在使用 Omnivision ov5620 http electronics123 net amazon datasheet OV5620 CLCC DS 20 1 3 pdf http electronics123 net amazo
  • NLog 在发布模式下不工作

    我正在使用 NLog 记录我的 asp net mvc C 应用程序中的异常 NLog 在发布模式下不工作 在调试模式下运行时也是如此 可能是什么问题 有什么解决办法吗 我和你遇到了同样的问题 ASP NET MVC 3 NET 4 IIS
  • OrientDB 中带有子选择的根空间查询

    我正在尝试组合一个查询来查找图中节点 2 公里以内的节点 假设我有一个数据集 标记了纳斯卡线中的一些地理符号 Name Latitude Longitude Hummingbird 14 692131 75 148892 Monkey 14
  • 如何选择哪个 iPhone 型号模拟器来运行我的 React Native 应用程序?

    我正在开发 React Native 应用程序 并在 iOS 模拟器上进行测试 但是 它始终在 iPhone 6 上运行 我不知道如何切换到其他 iPhone 型号 例如 iPhone 6 Plus 或 5 我可以通过转到模拟器 gt 硬件
  • 警告:活动未启动,其当前任务已被带到前面[重复]

    这个问题在这里已经有答案了 我觉得这个问题很常见 Stackoverflow 上的许多结果都谈到了这一点 一般的答案是 因为一个旧的应用程序正在运行 并且我尝试从 Eclipse 运行一个新的应用程序 但编译没有改变 所以 Android
  • 模板类类型别名在成员声明中无法替换

    假设你有一个模板class像这样 template
  • 如何清除“运行”->“参数”菜单中的“参数”字段?

    我正在使用 CodeGear RAD Studio IDE 为了使用命令行参数测试我的应用程序 我多次使用 运行 gt 参数 菜单中的 参数 字段 但每次我为它提供一个新值时 它都无法从 下拉框 中删除 我需要清理这个字段 删除所有值 因为
  • 在现实世界中扩展 Docker 容器

    我有一些关于扩展 Docker 容器的基本问题 我有 5 个不同的应用程序 它们彼此没有连接 在拥有容器之前 我会在每个虚拟机上运行 1 个应用程序 并在云中单独扩展和缩小它们 现在 有了容器 我就可以在虚拟机之上实现隔离 因此现在我可以运
  • 如果父级未被任何其他子级引用,则删除父级

    我有一个示例情况 parent表有一列名为id 引用于child表作为外键 删除子行时 如果父行未被任何其他子行引用 如何同时删除父行 在 PostgreSQL 中9 1 或更高版本您可以使用单个语句来完成此操作数据修改CTE https
  • C# WPF 评级控件类似于 Wifi 信号指示器

    我已经搜索了很多类似于下图中的 wifi 信号强度指示器的 WPF 评级控件 但我找不到一个 我尝试自己做 这就是结果
  • iPhone 信号强度

    我知道这个问题已经被提出 但没有任何答案 在 Objective C 中 有没有办法返回信号强度 苹果不允许开发者直接访问低级无线API函数 可以在您的应用程序中包含其中一些功能 请参阅iPhone无线项目 http code google
  • 将 QHBoxLayout 的每个小部件对齐到顶部

    我试图将 QHBoxlayout 中的每个小部件对齐到顶部 但我得到的是每个小部件似乎都居中 我认为这是由于尺寸不同造成的 例如 from PyQt5 QtGui import from PyQt5 QtCore import from P
  • 自定义 Ajax 绑定无法正常工作

    我有以下自定义 Ajax 绑定代码 即使它显示第一页的数据 也会存在以下问题 The request Sorts在 Orders Read 方法中作为 NULL 出现 The request PageSizeOrders Read 方法中的
  • Altair 通过绑定范围滑块对日期时间值进行选择和转换过滤器似乎不适用于相等条件或选择器本身

    我想将范围滑块与日期时间值绑定 以仅过滤图表中特定日期的数据 使用stocks数据 我想要做的是让 x 轴显示公司 y 轴显示用户通过范围滑块选择的特定日期的股票价格 根据来自的输入这个答案 https stackoverflow com