如何在 R 中使用带有 ggraph 的下标?

How to use subscript with ggraph in R?

很简单的问题,似乎要花很多时间才能解决。使用 ggraph 创建树状图时,我试图在节点标签中包含一个下标。但是,我似乎无法使用 expression 让它工作。例如,如果我创建一些数据和如下所示的树状图:

library(tidygraph)
library(ggraph)
library(dplyr)

# create some data
nodes <- tibble(
  var = c("x4 ≤ 100", "x1 ≤ 50", "µ", "µ", "µ") 
)

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, "dendrogram") +
  geom_edge_elbow() +
  geom_node_label(aes(label = var)) +
  theme_graph() +
  theme(legend.position = "none")

在终端节点中,我试图为 µ 值添加一个下标。类似于:µ1、µ2 等。但我似乎无法让它工作。

关于如何解决这个问题有什么建议吗?

这可能不是最优雅的方式,但您可以在geom_node_label中使用parse = TRUE;由于某种原因,它保留了 expression(),但您可以在之后摆脱它:

library(tidygraph)
library(ggraph)
library(dplyr)

# create some data
nodes <- tibble(
  var = c('"x4 ≤ 100"', '"x1 ≤ 50"', expression("µ"[1]), expression("µ"[2]), expression("µ"[3]))
)

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, "dendrogram") +
  geom_edge_elbow() +
  geom_node_label(aes(label = gsub("(expression\()(.*)(\))", "\2", var)), parse=T) +
  theme_graph() +
  theme(legend.position = "none")

reprex package (v2.0.1)

于 2022-04-05 创建