在 ggraph 中更改 gganimate shadow_mark() 中的 alpha 级别

问题描述

我已经使用 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 (将#修改为@)