覆盖 Altair 折线图的默认分组?

2024-04-03

我想制作一张图表,其中一条线在沿线的不同位置具有不同的颜色。

这不起作用:

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

x = np.linspace(0,1)
y = x**2
c = np.round(x*20)
df = pd.DataFrame({'x': x, 'y': y, 'c': c})
print(df.head())
alt.Chart(df).mark_line().encode(x='x', y='y', color='c')

(我想要一条连续的线,而不是一堆线段。)

据推测,问题在于 Altair(或 Vega-Lite)决定按颜色进行分组,并为每个组绘制一条单独的线。

我可以覆盖此默认分组以表示整行应该是一个组吗?

为了进行比较,在 R 的 ggplot2 库中the group论证会做我正在寻找的事情 https://www.gl-li.com/2017/08/13/ggplot2-group-overrides-default-grouping/.


这是一个基本上可以得到我正在寻找的情节的技巧:

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

x = np.linspace(0,1)
y = x**2
c = np.round(x*20)
df = pd.DataFrame({'x': x, 'y': y, 'c': c})
df_shifted = df.shift()
df_shifted['c'] = df['c']
alt.Chart(pd.concat([df, df_shifted])).mark_line().encode(x='x', y='y', color='c')

这种方法放弃告诉 Altair/Vega-Lite 我希望我的点组成一条线,而是通过使用额外的(移位的)数据副本在每对点之间创建一个单独的线段。

线段根据每个线段中的左侧点进行着色,我认为这有点误导(如果只有几个点,则非常误导)。您可以通过将颜色设为两侧的平均值来使黑客变得更复杂。

仍然希望有人能明确回答用户是否可以控制分组。

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

覆盖 Altair 折线图的默认分组? 的相关文章

随机推荐

  • rdd后面的数字是什么意思

    rdd后面括号里的数字是什么意思 RDD后面的数字是它的标识符 Welcome to version 2 3 0 Using Scala version 2 11 8 OpenJDK 64 Bit Server VM Java 1 8 0
  • 无法使用python列出谷歌驱动器中的文件

    不确定这是否与我的代码或 Google 方面的某些内容有关 但是我可以将文件推送到驱动器 但由于某种原因我无法列出文件夹内的文件 文件夹元数据 这是我正在使用的代码 SCOPES https www googleapis com auth
  • Spring Boot - @Value 注释不起作用

    我尝试使用 SmtpAuthenticator 创建邮件服务 组件已正确启动 但用户名和密码字段中存在空值 为什么 Component public class SmtpAuthenticator extends Authenticator
  • m2e 连接器 buildhelper 与 Eclipse Juno SR1 m2e 1.2 不兼容

    Update 将解决方案移至答案 Eclipse Juno SR1 安装 m2e 插件版本 1 2 m2e 连接器buildhelperEclipse 市场提供的与此版本的 m2e 插件不兼容 我一直在浏览各种邮件列表 但找不到更新的构建帮
  • Angular2:如何操作 url 查询字符串?

    在角 1 中 有一个 location search 可以操作 URL 查询字符串的函数 Angular2 等价于什么 I tried import Location from angular2 angular2 and import UR
  • 使用 numpy 拟合数据

    我有以下数据 gt gt gt x array 3 08 3 1 3 12 3 14 3 16 3 18 3 2 3 22 3 24 3 26 3 28 3 3 3 32 3 34 3 36 3 38 3 4 3 42 3 44 3 46
  • 未接听电话的通话计费 - Twilio

    我正在使用此代码进行传出浏览器调用link https www twilio com docs quickstart php client outgoing calls 我使用的代码与链接中所示的代码相同 也使用 twiML 应用程序 我正
  • 使用经典 ASP 发送“application/soap+xml”SOAP 请求

    如有任何帮助 我们将不胜感激 我已经做了几天了 下面是我到目前为止得到的代码 不幸的是 当我运行它时 我收到 HTTP 415 错误 无法处理消息 因为内容类型为 text xml charset UTF 8 不是预期的类型 applica
  • 填充图中水平线上方和下方的区域

    我想填充两条水平线上方和下方的区域 这就是我想出的 par mfrow c 1 2 x lt seq 1 24 1 y lt rnorm 24 10 2 for i in 1 2 plot x y ylim c 4 16 lines x y
  • 如何从数据流中的PCollection读取bigQuery

    我有一个从 pubsub 获得的对象 PCollection 比如说 PCollection
  • 如何根据第 i 个字段的值对 numpy 数组进行切片?

    我有一个 2D numpy 数组 有 4 列和很多行 gt 10000 这个数字不固定 我需要创建n按其中一列的值划分子数组 我发现的最接近的问题是如何按列值对 Numpy 数组进行切片 https stackoverflow com qu
  • 无法根据中心原点旋转齿轮

    我正在尝试制作一个悬停效果 它将三个不同的 cog svg 图标旋转到其受尊重的中心原点 我尝试使用transform origin作为中心但没有运气 任何帮助 将不胜感激 下面是我的代码 cog middle transform rota
  • 如何将 pandas value_counts() 合并到数据帧或使用它来子集数据帧

    我使用 pandas df value counts 来查找特定品牌出现的次数 我想将这些价值计数与初始数据框中的各个品牌合并 df has many columns including one named brands brands df
  • 获取传递给函数的参数的列表/元组/字典?

    给定以下函数 def foo a b c pass 如何获得传入参数的列表 元组 字典 等 无需自己构建结构 具体来说 我正在寻找 JavaScript 的 Python 版本arguments关键字或 PHP 的func get args
  • 不使用 powershell 远程安装 .msi?

    我们有一个多服务器系统我们需要在客户端安装 我想编写一个脚本 可以 关闭远程机器上的服务 卸载多台远程计算机上的软件 在多个远程计算机上安装 msi 文件 我曾挣扎过psexec and wmic做第 2 点和第 3 点 似乎必须有一种更简
  • Python 日志记录重复

    我有四个文件 Main py A py B py 日志系统 我正在使用 main 来使用 A py 和 B py 的函数 所以现在我必须在调用它们时记录所有信息 所以我编写了一个名为 log system 的脚本来为每个脚本文件 例如 A
  • Perl:Javascript::V8 模板 - 来自 Perl

    寻找像 HTML Mason 或 Mason 这样的模板引擎 那么什么将源组件 编译 为 perl 代码 而不是 perl 代码将组件 编译 为 JavaScript 代码 然后使用 Javascript V8 运行 执行它们Perl 模块
  • 可以使用 XSLT 将 XML 拆分为多个页面吗?

    我有一个带有分页指示的 XML 文档 我想将这个单个文件转换为多个输出文件 也就是说 我想转换以下内容
  • 针对 Azure AD 的 WebForms 身份验证

    我有一个 WebForms 站点 它在内部服务器上运行 并根据我们的内部 Active Directory 对用户进行身份验证 由于我们正在实施一些新功能 该网站需要移动到外部服务器 然后更改身份验证 以便根据我们的 Office 365
  • 覆盖 Altair 折线图的默认分组?

    我想制作一张图表 其中一条线在沿线的不同位置具有不同的颜色 这不起作用 import altair as alt import numpy as np import pandas as pd x np linspace 0 1 y x 2