我希望在 ggplot 中为图表标题添加下标,看起来像这样:
k 1、k 2和 k 3的值存储在变量中:k1
,k2
和k3
可重现的示例
data <- data.frame(age = 30:32, count = 2:4)
k1 <- 2
k2 <- 9
k3 <- 4
可能的方法:解析文本
我已经能够通过粘贴表达式并对其进行解析来添加变量名称和值,如下所述:
title <- paste0("k[1]*", k1, "~k[2]*", k2, "~k[3]*", k3)
title_parsed <- parse(text = title)
data %>%
ggplot(aes(x = age, y = count)) +
geom_point() +
ggtitle(title_parsed)
其结果为:
另一种可能的方法:使用 bquote
并且能够使用 bquote 正确显示标题的固定部分(等号和逗号)(但无法从我的变量中添加 k 的值):
data %>%
ggplot(aes(x = age, y = count)) +
geom_point() +
ggtitle(bquote(k[1]*" = ," ~k[2]*" = and" ~ k[3]*" = "))
我还可以将它们组合起来,生成一个简短的标题,只有一个 k 值:
title <- paste0("k[1]*", "\" = \"*", k1)
title_parsed <- parse(text = title)
data %>%
ggplot(aes(x = age, y = count)) +
geom_point() +
ggtitle(title_parsed)
但是对于具有多个 k 值的较长标题,我无法解析逗号旁边带有数字的文本字符串。(例如,以下两个值title
在输入到解析函数中时都会引发错误)
title <- paste0("k[1]*", "\" = \"*", k1, "*,")
title <- paste0("k[1]*", "\" = \"*", k1, ",")
title_parsed <- parse(text = title)
该问题似乎是逗号和其他特殊字符所特有的,因为我可以在数字后添加其他文本:
title <- paste0("k[1]*", "\" = \"*", k1, "~text")
title_parsed <- parse(text = title)
我做错了什么?我想知道是否需要在逗号前使用转义字符,但 \、\\ 和 \\\ 的组合似乎不起作用。