如何解决如何在ggraph中手动自定义边缘颜色和箭头?
我正在尝试在自定义某些样式的同时可视化网络。到目前为止,我还没有完成任务。
要求:
- 只有权重为2的边缘上的箭头才指向链接的方向。
- 边缘的颜色应该与它要离开的节点的颜色相同。
代码:
library(ggraph)
library(igraph)
library(graphlayouts)
library(tibble)
library(dplyr)
nodes <- data.frame(name = c('a','b','c','d','e'))
links <- data.frame(
from = c('a','a','c'),to = c('b','e','e'),weight = c(1,1,2,2),linetype = c('dashed','dashed','solid','solid')
)
tbl_graph_net <- as.igraph(tidygraph::tbl_graph(nodes = nodes,edges = links))
layout <- create_layout(tbl_graph_net,layout = 'igraph',algorithm = "nicely")
colfunc <- colorRampPalette(c("blue","red"))
cols <- colfunc(5)
ggraph(tbl_graph_net,layout = "stress") +
# Edges
geom_edge_fan(aes(colour = from,edge_width = weight,linetype = linetype)) +
scale_edge_linetype_manual(limits = as.factor(links$linetype),values = links$linetype) +
scale_edge_colour_gradient(low = "blue",high = "red") +
# Nodes
geom_node_point(colour = cols,size = 10) +
# Labels
geom_node_text(aes(label = name),size = 7,colour = "#FFFFFF") +
# Theme
theme_graph() +
theme(legend.position = "none")
我知道scale_edge_color_manual
的存在,但不知道如何正确使用它。同样,我不知道我是否使用scale_color_manual
正确缩放了节点的颜色。
绝对可以匹配边缘和节点的颜色,但是我不知道如何仅在某些边缘上绘制箭头。如果ggraph
不允许,我很乐意接受使用igraph
或类似方法的另一种解决方案。
编辑:
我设法匹配了边缘和节点的颜色。代码已更新。仅缺少箭头
解决方法
您可以在ggraph中使用geom_edge_link2()
变体,以使边缘与它们来自的节点的颜色相同。
关于箭头,我最近问了一个类似的问题。使用base / igraph here
为我提供了一个解决方案版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。