将颜色渐变应用于 ggraph 的 `geom_conn_bundle`
Apply color gradient to ggraph's `geom_conn_bundle`
上下文
我正在使用 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) 的内容可以作为我希望的连接外观的示例:
几个用于绘制边缘的 ggraph
geom,包括 geom_conn_bundle
和 geom_edge_diagonal
,具有计算的索引统计信息。它是一个从 0 到 1 的数字,表示一个点沿边缘的距离。请注意,这些 geoms (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 创建
上下文
我正在使用 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) 的内容可以作为我希望的连接外观的示例:
几个用于绘制边缘的 ggraph
geom,包括 geom_conn_bundle
和 geom_edge_diagonal
,具有计算的索引统计信息。它是一个从 0 到 1 的数字,表示一个点沿边缘的距离。请注意,这些 geoms (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 创建