上下文
我正在使用ggraph
将节点(树的叶子)排列成圆形树状图,然后在某些节点之间添加连接(使用geom_conn_bundle
使用分层捆绑):
library(ggraph)
library(igraph)
# Example data
edges <- data.frame(from="root", to=paste("leaf", seq(1,100), sep=""))
vertices <- data.frame(name = unique(c(as.character(edges$from), as.character(edges$to))) )
tree <- graph_from_data_frame( edges, vertices=vertices )
# Drawing nodes
pr <- ggraph(tree, layout = "dendrogram", circular = TRUE) +
geom_edge_diagonal(alpha = 0.2)
# Example connection
pr <- pr + geom_conn_bundle(
data = get_con(from = 23, to = 42),
alpha=0.8,
width=3,
colour="skyblue",
tension = 0.9
)
print(pr)
这很好地显示了skyblue
中几乎透明的树状图和一些(在本示例中为)连接。
问题/所需的输出
我想通过颜色渐变(例如,从绿色开始,逐渐变为红色)指示连接的方向,而不是仅以一种颜色(天蓝色)显示连接。如何使用R和ggraph的geom_conn_bundle
实现这样的颜色渐变?
Holten (2006)的以下摘录可以作为我希望连接看起来如何的示例:
答案 0 :(得分:2)
几个ggraph
绘图边缘的几何图形(包括geom_conn_bundle
和geom_edge_diagonal
)具有计算得出的索引统计信息。它是点沿边缘的距离从0到1的数字。请注意,这些几何的简化版本(geom_*0
)不会计算出来。 ggraph
作者在this blog post中对此有所提及。
在这种情况下,将索引stat(index)
映射到捆绑软件aes
内的颜色,然后使用(scale_edge_color_gradient
,而不是我最初尝试的scale_color_gradient
来设置渐变比例
在示例图片中,我无法确定宽度是否也按比例缩放,但是同样可以工作,例如edge_width = stat(index)
。
library(ggraph)
library(igraph)
ggraph(tree, layout = "dendrogram", circular = TRUE) +
geom_edge_diagonal(alpha = 0.2) +
geom_conn_bundle(aes(color = stat(index)),
data = get_con(from = 23, to = 42),
alpha=0.8,
width=3,
# colour="skyblue",
tension = 0.9
) +
scale_edge_color_gradient(low = "green", high = "red")
由reprex package(v0.2.1)于2019-03-09创建