我正在使用 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")
这绘制为:
我想(不要担心线宽权重):
所以动画序列将是这样的(所有 Actor 都包含在每一帧中):
如果我可以添加隔离
c("researcher", "End")
对于上面的 igraph,我可以推广到每一帧。我认为这可能很简单:
V(g) <- actors
但事实并非如此。
最佳答案
我用来实现这一点的技巧是预渲染布局,并将每个节点和边缘预先格式化为不可见,直到它们的时间到来。
hsv(.36,1,1,alpha=0)
)hsv(.36,1,1,alpha=1)
) 带动画的主条目:
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/