如何使用 Altair 按日期时间值突出显示条形

2024-01-11

如同 :https://altair-viz.github.io/gallery/bar_chart_with_highlighted_bar.html https://altair-viz.github.io/gallery/bar_chart_with_highlighted_bar.html,是否可以根据特定的日期时间值突出显示一个条形?我似乎不太能让它发挥作用。

import pandas as pd
import altair as alt
import datetime

df = pd.DataFrame(
    {
        "year": [2019, 2019, 2019],
        "month": [1, 3, 7],
        "day": [1, 1, 1],
        "value": [5, 7, 9],
    }
)


df["Mth"] = pd.to_datetime(dict(year=df["year"], month=df["month"], day=df["day"]))
df.drop(
    ["year", "month", "day"], axis=1, inplace=True
)  # columns not present in my actual data set


alt.Chart(df).mark_bar(size=30).encode(
    x="Mth",
    y="value",
    color=alt.condition(
        alt.datum.Mth == "2019-03-01", alt.value("orange"), alt.value("steelblue")
    ),
    tooltip=[alt.Tooltip("value", title="value"), alt.Tooltip("Mth", title="Month"),],
)

输出的屏幕截图 https://i.stack.imgur.com/tqxBu.png


您的表达式不起作用,因为您正在将时间值与字符串进行比较。在进行比较之前,您需要解析日期字符串,可以使用织女星表达 https://vega.github.io/vega/docs/expressions/功能:

alt.Chart(df).mark_bar(size=30).encode(
    x="Mth",
    y="value",
    color=alt.condition(
        alt.datum.Mth == alt.expr.toDate('2019-03-01T00:00:00'),
        alt.value("orange"), alt.value("steelblue")
    ),
    tooltip=[alt.Tooltip("value", title="value"), alt.Tooltip("Mth", title="Month"),],
)

请注意,此处使用完整的 ISO 时间字符串非常重要,因为 Javascript 在解析日期时使用的时区会根据日期的格式而变化(例如,在大多数浏览器中,"2019-03-01"被解析为 UTC 时间,而"2019-03-01T00:00:00"被解析为本地时间)并且非标准日期格式的解析因浏览器而异。

有关 Javascript 日期解析的更多信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse.

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

如何使用 Altair 按日期时间值突出显示条形 的相关文章

随机推荐

  • 了解 Spring 上下文初始化顺序

    我有一组复杂的 bean 以及它们之间的依赖关系 所有豆子都是 Service Repository or Controller带注释 我使用 PostConstruct注解 虽然存在一些循环依赖 但系统仍然由 Spring 正确初始化 然
  • Laravel 多个工人运行两次工作

    我使用 Laravel 5 6 将作业分派到队列 然后使用主管激活该队列上的 8 个工作线程 我原以为 Laravel 会知道不要运行同一个工作两次 但我惊讶地发现它确实如此 同样的工作由不止一名工人负责 因此奇怪的事情开始发生 问题是 一
  • 是否可以从托管 C++/CLI 项目正常运行非托管 C++?

    我正在将一个纯非托管 VC 9 项目包装在 C CLI 中 以便从 NET 应用程序中简单地使用它 我知道怎么写wrappers https stackoverflow com questions 15505992 can you use
  • FFImageLoading:如何添加身份验证?

    我正在尝试使用FF图像加载 https github com luberda molinet FFImageLoading wiki在我的 Xamarin iOS 和 Xamarin Android 应用程序中从 url 加载图像 所有网址
  • & 导致返回的文本在 URL 中被截断

    我从之前维护代码的人那里继承了几个php脚本 他没有编程经验 主要是尽其所能地将东西组合在一起 今天我不得不重写一个WordPress的插件文件 现在我不知道出了什么问题 我面临的问题是 当在属于表的 else 语句中显示返回的文件名时 我
  • 为什么子文件夹没有部署到 Google App Engine Nodejs 应用程序

    我正在开发 NodeJS Web 应用程序并尝试在 Google 云中运行它 仅根文件夹中的文件会使用以下命令部署到 Google App Enginegcloud app deploy命令 appengine express 示例应用程序
  • 解析错误:语法错误,意外的 T_ELSE,我不知道为什么

    这是我的 php 代码 h3 class info Upcoming Games h3 h3 class info Athletic Events h3 为什么我会收到此错误 我已经有了我需要的所有括号 不是吗 The and else 不
  • 如何在 iOS 11 中禁用“保存到文件”?

    我有一个 iOS 应用程序 它创建 PDF 并使用 UIActivityViewController 使用默认共享功能进行共享 我不得不阻止一些共享设施 如 Vimeo Facebook Twillio 等 并且文件不应存储在设备上 在新的
  • 带圆形窗口的局部最大值

    我正在尝试使用圆形内核计算矩阵上的局部最大值滤波器 输出应该是局部最大值的单元格 对于输入 数据 中的每个像素 我需要通过圆形窗口查看它是否是局部最大值 从而返回值 1 否则返回 0 我有这段代码 基于这里的答案 如何将圆盘形掩码应用于 n
  • JSP、MySQL 和 UTF-8

    我正在思考 通过表单输入的国际字符没有完全按照输入的方式存储 并且存储的数据也没有按照存储在数据库中的方式返回 如果我输入 anak mlek patlad 并单击表单上的 保存 我使用的页面会显示 anak mlek patlad 但数据
  • xunit 添加信息到输出

    有谁知道如何在运行 xUnit 测试时向输出控制台添加附加信息 我正在使用 testdriven net 但我不认为这就是我的答案所在 我正在使用一个IUseFixture 实际上IClassFixture从 2 0 开始 在测试之间维护数
  • ServiceStack:如何处理错误?

    到目前为止 我使用 ServiceStack 取得了很好的效果 只是处理错误似乎很棘手 如果在消息序列化期间出现问题 例如 因为我忘记向消息添加默认构造函数 则客户端返回的所有消息都是服务器有内部错误且状态代码为 500 的消息 这Http
  • gwt 从 jsni 方法返回了除 int 之外的其他内容

    从今天开始 我收到了一条与昨天相同的代码的错误消息 但我没有进行任何更改 我收到此错误消息 警告 perchsearch 从 JSNI 方法 com google gwt dom client DOMImplStandardBase Cli
  • 无法使用 vue.js 调用 v-show 和 @click 同一按钮

    我正在尝试根据数据变量在按钮上显示文本并调用 vue js axios 方法的函数 我能够根据数据变量在按钮上显示文本 但无法调用 axios post 方法 我收到以下错误 当我点击按钮时 url http localhost 8085
  • 有没有办法用c3js更改标签?

    我正在使用新的c3js http c3js org 图书馆 有什么办法可以更改图表中某条数据的标签吗 我有一个条形图 其中每个条形都是一个美元价值 我希望每个条形的标签为 100 美元而不是 100 美元 如果我将值设置为 100 美元 则
  • OpenXML 替换所有文档中的文本

    我有下面的一段代码 我想用 NewText 替换文本 Text1 这样就可以了 但是 当我将文本 Text1 放入表格中时 该表格不再适用于表格内的 Text1 我想在所有文档中进行此替换 using WordprocessingDocum
  • initWithFrame 未调用,但 awakeFromNib 已调用

    我正在尝试对 NSOutlineView 进行子类化 这是我的代码 OutlineViewSublcas h import
  • 什么是uWSGI主模式?

    如果我只运行一个应用程序 在主模式下运行 uWSGI 有什么好处 主模式是否提供进程管理优势 使其比通过 Upstart 运行更可靠 upstart只是一个进程管理器 uWSGI master可以访问worker的很多内存区域 事实上恰恰相
  • 实体框架 - SaveChanges() 未获取生成的身份密钥

    我在我的项目中使用实体框架 这真是一场噩梦 我有一个 SQL 数据库 有一个名为 Form 的表 Form有一个ID 它是PK和Identity 它是自动增加的 这次我这样做 Dim form as int32 Dim dbform As
  • 如何使用 Altair 按日期时间值突出显示条形

    如同 https altair viz github io gallery bar chart with highlighted bar html https altair viz github io gallery bar chart w