1

我试图通过权重(在这种情况下相当于节点的宽度)和它的高度来调整树的节点大小。为此,我同时使用tidygraphggraph

例如,如果我创建一些数据并将其转换为tidygraph对象,然后我可以使用ggraph. 如果我只使用weight参数(在ggraph调用中),我会得到如下图:

library(tidygraph)
library(ggraph)

# create some data
nodes <- tibble(
  var = c("x4", "x1", NA, NA, NA),
  size = c( 100, 65, 50,  15, 35)
)

edges <- tibble(
  from = c(1,2,2,1),
  to   = c(2,3,4,5)
)

# turn in tidygraph object
tg <- tbl_graph(nodes = nodes, edges = edges)

# plot using ggraph
ggraph(tg, "partition", weight = size) +
  geom_node_tile(aes(fill = var)) +
  geom_node_label(aes(label = size, color = var)) +
  scale_y_reverse() +
  theme_void()+
  theme(legend.position = "none")

按重量缩放的树

这通过参数缩放树节点的宽度nodes$size。但是,如果我尝试同样的事情,除了我用 替换weight参数height,那就是:

# plot using ggraph
ggraph(tg, "partition", height = size) +
  geom_node_tile(aes(fill = var)) +
  geom_node_label(aes(label = size, color = var)) +
  scale_y_reverse() +
  theme_void()+
  theme(legend.position = "none")

我得到一个省略第一个节点的图(如下所示)和以下错误:

警告消息:在 hierarchy$height[edges[, node_col]] <- height :
要替换的项目数不是替换长度的倍数

按高度缩放的树

我想以某种方式将 theweightheightarguments 组合成一个情节。

我尝试通过将height论点放入美学中来进行实验,geom_node_tile如下所示:

ggraph(tg, "partition", weight = size) +
  geom_node_tile(aes(fill = var, height = size/100)) +
  geom_node_label(aes(label = size, color = var)) +
  scale_y_reverse() +
  theme_void()+
  theme(legend.position = "none")

但这会在节点之间留下间隙: 树缩放

有没有办法通过重量和高度来缩放节点,但仍然有一个连接的节点,如下例所示(我在 powerpoint 中快速制作): 正确的树

4

0 回答 0