r - 如何在保持布局固定的同时为不断增长的图形设置动画?

标签 r igraph

我正在使用 igraph 制作动画和 animation包。我想通过一次通过 data.frame 1 行进行动画处理来观察边缘的变化。我创建了一个 igraph 对象列表,并希望确保所有社交参与者都被表示出来,即使他们的行还没有出现。他们将成为隔离,直到后来的动画。

如何将参与者作为隔离添加到 igraph 对象中。我正在使用 layout.circle并希望将 Actor 保持在一致的位置。

我将从数据(igraph 对象)开始,然后是一些视觉效果来展示我想要的东西。

g <- structure(list(4, TRUE, c(0, 1, 2, 0), c(1, 2, 0, 3), c(0, 3, 
    1, 2), c(2, 0, 1, 3), c(0, 2, 3, 4, 4), c(0, 1, 2, 3, 4), list(
        c(1, 0, 1), structure(list(), .Names = character(0)), structure(list(
            name = c("greg", "teacher", "sam", "sally"), size = c(10, 
            10, 10, 10)), .Names = c("name", "size")), structure(list(
            wc = c(5L, 4L, 10L, 5L), id = 2:5, prop_wc = c(0.208333333333333, 
            0.166666666666667, 0.416666666666667, 0.208333333333333
            ), color = c("grey50", "grey50", "grey50", "grey50"), 
            width = c(3.125, 2.5, 6.25, 3.125)), .Names = c("wc", 
        "id", "prop_wc", "color", "width")))), class = "igraph")


library(igraph)
plot(g, layout=layout.circle)

## vector of actors to include in this order
## in the igraph object there is no "researcher" or "End" actor
actors <- c("greg", "teacher", "sam", "sally", "researcher", "End")

这绘制为:

enter image description here

我想(不要担心线宽权重):

enter image description here

所以动画序列将是这样的(所有 Actor 都包含在每一帧中):

enter image description here

如果我可以添加隔离 c("researcher", "End")对于上面的 igraph,我可以推广到每一帧。

我认为这可能很简单:
V(g) <- actors

但事实并非如此。

最佳答案

我用来实现这一点的技巧是预渲染布局,并将每个节点和边缘预先格式化为不可见,直到它们的时间到来。

  • 为全图渲染布局 L
  • 起初一切都是不可见的(hsv(.36,1,1,alpha=0))
  • 循环 :
  • 使节点/边在应该出现时立即可见 ( hsv(.36,1,1,alpha=1) )
  • 绘图图(具有初始计算和恒定布局 L)并另存为 png
  • 使用 ffmpeg 将所有东西粘在一起

  • 带动画的主条目:

    http://www.joyofdata.de/blog/animated-visualization-of-a-growing-network-of-carpoolings/

    代码:

    http://www.joyofdata.de/blog/r-code-for-igraph-animation/

    关于r - 如何在保持布局固定的同时为不断增长的图形设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543782/

    相关文章:

    r - simple_triplet_matrix 中的错误——无法使用 RWeka 来计算 Phrases

    r - 从 POSIXct 中提取小时和秒,以便在 R 中进行绘图

    r - 如何为 R igraph 中的某些边分配边权重

    python - 将 networkx 图转换为 igraph 图时遇到问题

    r - 我们可以改变 R-igraph 中的文本大小和节点大小吗?

    r - ggplot rcolorbrewer 扩展并应用于因子数据

    R 为什么 nclass.FD 返回的 bin 数量与 hist 函数不同?

    r - knitr 如何将警告信息保留在盒子内?

    r - 如何避免igraph中的双箭头

    r - 使用 ggtree 绘制 igraph 树对象