Plotly:在 R 中的每帧中对可变数量的轨迹进行动画处理

2024-03-22

我想对一组帧进行动画处理,其中每个帧可能具有不同数量的轨迹,如[此处]所述1 https://community.plotly.com/t/animating-a-variable-number-of-traces-in-each-frame/46400。我将使用以下数据框和库:

library(plotly)
df <- data.frame(x = (1:200), a = runif(200), b = runif(200)+1, c = runif(200)-1)

如果每帧的迹线数量并不总是相同,则仅显示第一帧的迹线数量。在屏幕截图中,显示了第二帧,其中跟踪b不见了。同样,在第 3 帧中,跟踪b and c缺失。

p <- plot_ly(mode = "lines+markers", type ="scatter")
# frame 1 traces
p <- add_trace(p, x = df$x[1:100], y = df$a[1:100], frame = 1, name = "a frame 1")
# frame 2 traces
p <- add_trace(p, x = df$x[1:100], y = df$a[1:100]+1, frame = 2, name = "a frame 2")
p <- add_trace(p, x = df$x[1:150], y = df$b[1:150]+1, frame = 2, name = "b frame 2")
# frame 3 traces
p <- add_trace(p, x = df$x[1:100], y = df$b[1:100]-1, frame = 3, name = "a frame 3")
p <- add_trace(p, x = df$x[1:150], y = df$b[1:150]-2, frame = 3, name = "b frame 3")
p <- add_trace(p, x = df$x[1:200], y = df$c[1:200]-2, frame = 3, name = "c frame 3")
# add layout
p <- layout(p,
         title = "Example not showing traces",
         yaxis = list(title = "y dim"),
         xaxis = list(title = "x dim"))
# and show the plot
p

我发现避免这种情况的黑客方法是将虚拟痕迹添加到痕迹较少的帧中。这确保了每帧的迹线数量始终相同。通过添加visibile = F,不显示虚拟迹线,但显示正确的迹线数量。需要虚拟跟踪是一个错误还是我做错了什么?

p <- plot_ly(mode = "lines+markers", type ="scatter")
# frame 1 traces
p <- add_trace(p, x = df$x[1:100], y = df$a[1:100], frame = 1, name = "a frame 1", visible = T)
p <- add_trace(p, x = df$x[1:150], y = df$b[1:150], frame = 1, name = "dummy frame 1", visible = F)
p <- add_trace(p, x = df$x[1:200], y = df$c[1:200], frame = 1, name = "dummy frame 2", visible = F)
# frame 2 traces
p <- add_trace(p, x = df$x[1:100], y = df$a[1:100]+1, frame = 2, name = "a frame 2", visible = T)
p <- add_trace(p, x = df$x[1:150], y = df$b[1:150]+1, frame = 2, name = "b frame 2", visible = T)
p <- add_trace(p, x = df$x[1:200], y = df$c[1:200]+1, frame = 2, name = "dummy frame 1", visible = F)
# frame 3 traces
p <- add_trace(p, x = df$x[1:100], y = df$b[1:100]-1, frame = 3, name = "a frame 3", visible = T)
p <- add_trace(p, x = df$x[1:150], y = df$b[1:150]-2, frame = 3, name = "b frame 3", visible = T)
p <- add_trace(p, x = df$x[1:200], y = df$c[1:200]-2, frame = 3, name = "c frame 3", visible = T)
# add layout
p <- layout(p,
         title = "Example using 'visible' attribute hack",
         yaxis = list(title = "y dim"),
         xaxis = list(title = "x dim"))
# add animation options 
p <- animation_opts(p, 1000, easing = "elastic", redraw = TRUE)
# and show plot
p

当迹线数量变化时,是否有更好的方法来显示不同的帧?


None

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

Plotly:在 R 中的每帧中对可变数量的轨迹进行动画处理 的相关文章

  • 使用 igraph 将边缘属性显示为标签

    我在 R 中使用 igraph 进行网络分析 我想在图中的每条线上显示边缘属性 下面是一个例子 df lt data frame a c 0 1 2 3 4 b c 3 4 5 6 7 nod lt data frame node c 0
  • 使用 X11 窗口的 R 脚本仅打开一秒钟

    我正在通过 Linux Mint 16 命令行运行 R 脚本 它包含我想在窗口中显示的箱线图 所以我使用 x11 函数来创建该窗口 这是我的代码 testdata lt data frame sample 1 1000 size 100 r
  • 根据另一个向量替换向量中的值

    我想替换向量中的值 x 与另一个向量 y 陷阱 22 方法需要是动态的 以适应向量中不同数量的 级别 x 例如 考虑向量x x lt sample c 1 2 3 4 5 100 replace TRUE gt x 1 2 4 1 1 3
  • 无重叠的抖动点

    My data a lt sample 1 5 100 replace TRUE b lt sample 1 5 100 replace TRUE c lt sample 1 10 100 replace TRUE d lt sample
  • 使用 purrr::map() 更改和分配新变量名称

    我刚刚开始掌握编写函数并使用 lapply purrr map 使我的代码更加简洁 但显然还没有完全理解它 在我当前的示例中 我想重命名 lm robust 对象的系数名称 然后更改 lm robust 对象以合并新名称 我目前这样做 li
  • ggplot堆叠条 - 隐藏标签但保留标签位置

    我在 ggplot 中有一个堆积条形图 其中 geom text 标签位于每个条形的中心 我想隐藏小条上的标签 以便图表看起来不会过于拥挤 我可以使用下面的代码来完成此操作 但它会弄乱标签的位置 正如您在下面的链接图片中看到的那样 它们不再
  • 从受密码保护的 Excel 文件到 pandas DataFrame

    我可以使用以下命令打开受密码保护的 Excel 文件 import sys import win32com client xlApp win32com client Dispatch Excel Application print Exce
  • 重定向到破折号中的 url

    我正在使用 dash 构建一个仪表板 每当单击特定数据点时 我都会创建一个唯一的 url 如何将用户重定向到此创建的 url 我正在使用下面给出的代码 每当有人单击任何数据点时 单击事件就会触发并执行回调函数 app layout html
  • 带有nearPoints()的动态ggplot图层闪亮

    我熟悉闪亮的基础知识 但在这里遇到了一些困难 我希望能够在单击某个点以突出显示该点时添加 ggplot 图层 我知道 ggvis 可以做到这一点 并且画廊中有一个很好的例子 但我希望能够使用nearPoints 捕获点击作为 ui 输入 我
  • Plotly 绘图不会在 RMarkdown 文档的 for 循环内渲染

    我正在尝试动态构建一个需要运行循环的报告 并为每次迭代打印一些消息 表格和绘图 我可以让一切正常运转except为了情节 示例 rmd r echo FALSE results asis fig keep all message FALSE
  • pandas 使用日期时间对象重新索引 DataFrame

    是否可以重新索引 pandasDataFrame使用由日期时间对象组成的列 我有一个数据框df包含以下列 Int64Index 19610 entries 0 to 19609 Data columns cntr 19610 non nul
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • Jupyter Lab 中未渲染 Plotly Express

    以下代码不会在 Jupyter 实验室中呈现 matplotlib widget import plotly express as px import numpy as np import pandas as pd df pd DataFr
  • R 中的 as.numeric 有什么问题? [复制]

    这个问题在这里已经有答案了 gt X864291X8X74 1 8 0000000000 9 0000000000 10 0000000000 6 0000000000 8 0000000000 10 Levels 0 0000000000
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • R:如何根据规范更改数据框中的列名称

    我有一个数据框 它的开头如下 SM H1455 SM V1456 SM K1457 SM X1461 SM K1462 ENSG00000000419 8 290 270 314 364 240 ENSG00000000457 8 252
  • 使用 R 从字符串中提取函数参数

    最好使用stringr包 我想创建一个函数extract 以字符串向量作为参数 vec lt c div span icon hospital user i18n t Enrolments or i18n t Paper a string
  • 无法在 Document-Term-Matrix 中看到 `RTextTools::toLower()` 文本的结果

    我尝试创建一个矩阵 为此我想降低文本 为此 我使用此 R 指令 matrix create matrix tweets 1 toLower TRUE language english removeStopwords FALSE remove
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件

随机推荐