问题描述
我已经使用 ggraph 绘制了一个图形,并且我正在尝试使用 gganimate 按顺序突出显示边缘组。这是创建我想要动画的示例数据集的代码:
library(tidyverse)
library(ggraph)
library(igraph)
library(gganimate)
inc_mat <- matrix(0,ncol = 5,nrow = 5)
for (i in 1:5){
inc_mat[sample(1:5,3),i] <- 1
}
edge_list_from_inc_mat <- function(inc_mat){
edge_list <- matrix(0,ncol = 3,nrow = 1)
for (i in 1:dim(inc_mat)[2]){
to_add <- t(combn(which(inc_mat[,i] != 0),m = 2))
to_add <- cbind(to_add,rep(i,dim(to_add)[1]))
edge_list <- rbind(edge_list,to_add)
}
edge_list <- edge_list[-1,]
edge_list <- data.frame(from = edge_list[,1],to = edge_list[,2],hyperedge = edge_list[,3])
return(edge_list)
}
e.list <- edge_list_from_inc_mat(inc_mat)
graph <- graph_from_data_frame(e.list)
然后我使用此代码为其制作动画:
ggraph(graph) + geom_edge_link() + geom_node_point() + transition_states(hyperedge)
这完全符合我的意愿。但是,我也希望所有的边缘都隐约出现在背景中,我尝试使用 shadow_mark()
函数,如下所示:
ggraph(graph) + geom_edge_link() + geom_node_point() + transition_states(hyperedge) + shadow_mark(future = TRUE,alpha = .1)
但这最终导致所有组都一直大胆。
本质上,我想要的最终产品是让所有边缘始终模糊地出现,hyperedge
中的 e.list
列指定的边缘组被点亮一次大胆地分组。
非常感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)