【问题标题】:Apply color gradient to ggraph's `geom_conn_bundle`将颜色渐变应用到 ggraph 的 `geom_conn_bundle`
【发布时间】:2019-03-08 16:47:04
【问题描述】:

上下文

我正在使用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) 的以下摘录可以作为我希望连接外观的示例:

【问题讨论】:

  • 我们需要sample of data 才能真正提供帮助
  • 感谢您抽出宝贵时间发表评论。我在我的问题中添加了三行 R 代码。他们生成示例数据。不确定它是否会帮助人们回答,因为对我来说,这个问题似乎更多地出现在 ggraph 上,而不是我的(或任何)特定的实现上 :)

标签: r ggplot2 gradient linear-gradients ggraph


【解决方案1】:

用于绘制边缘的几个ggraph 几何图形,包括geom_conn_bundlegeom_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 创建

【讨论】:

  • 除此之外,您还可以使用geom_conn_bundle2() 在端点的缩放值之间进行插值。有关更多信息,请参阅文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
相关资源
最近更新 更多