分层边束:来自另一个数据的 geom_conn_bundle 属性,具有相同的结构

问题描述 投票:0回答:1

我有两张图,第一张图是分类图,第二张图代表第二级连接。 完美的图是分层边束。 但是,我只需要可视化第二级连接中的文本 我的数据:

hierarchy=data.frame(from=c("1","1","1","1","1.1","1.1","1.2","1.2","1.3","1.3","1.4","1.4"),
                    to=c("1.1","1.2","1.3","1.4","1.1.1","1.1.2","1.2.1","1.2.2","1.3.1","1.3.2","1.4.1","1.4.2"))
rel = data.frame(from=c("1.3.1","1.3.1","1.4.2","1.4.2"),
                 to=c("1.1.2","1.3.2","1.2.1","1.1.1"))

通常使用“cactustree”布局制作“分层边缘束”的代码是:

hierarchy_gr = as_tbl_graph(hierarchy)
vertices_hierarchy = hierarchy_gr %>% V()
from <- match( rel$from, vertices_hierarchy$name)
to <- match( rel$to, vertices_hierarchy$name)
ggraph(hierarchy_gr, 'cactustree',upright=TRUE) + 
#  geom_node_circle(aes(fill = depth), size = 0.25, alpha = 0.2) + 
  geom_conn_bundle(data = get_con(from = from, to = to), colour="red",linewidth=1,tension = 1) +
  geom_node_text(aes(label = name, size=0.5),check_overlap = TRUE) +
  theme(legend.position = "none") +
  coord_fixed()

结果是: 我有一个额外的数据框,它描述基于调查的关系的属性。关系、连接保持不变,但一些连接的属性发生了变化。 例如:

survey = data.frame(loc=c("A","A","B","C","C","D","D"),
                    from=c("1.3.1","1.3.1","1.4.2","1.3.1","1.4.2","1.3.1","1.4.2"),
                    n=c(2,5,3,4,1,3,3))

目的是获得各种分层边缘捆绑作为最终结果,具有相同的最终分层结构,但仅根据“调查”的数据框显示关系,并具有定义例如“调查”的链接属性。连接的宽度。 比如这个: 请原谅我没有发布测试代码。我正在尝试,但我仍然对它如何运作感到困惑。所以我决定尝试在这里问一个问题。

r hierarchy ggraph
1个回答
0
投票

抱歉,很简单:

ggraph(hierarchy_gr, 'cactustree',upright=TRUE) + 
  geom_conn_bundle(data = get_con(from = from, to = to, n = n, attr = attr),aes(edge_color=attr,edge_width=n),tension = 1) +
  geom_node_text(aes(label = name, size=0.5),check_overlap = TRUE) +
  coord_fixed()

但我还没有设法解决仅显示连接节点的文本的问题(请参阅分层边束:geom_node_text仅可视化来自连接的文本

© www.soinside.com 2019 - 2024. All rights reserved.