我看到了很多将下标和上标添加到绘图标签的示例,但我很好奇如何将下标添加到最终可用于绘图的字符向量。
示例数据和图:
data.frame(site = LETTERS[1:10],
a1 = c(rep(1, 7), rep(NA, 3)),
a2 = c(rep(NA, 4), rep(2, 6)),
minY = sample(1:9, 10, replace = TRUE),
maxY = sample(10:19, 10, replace = TRUE)) %>%
mutate(label = case_when(is.na(a1) ~ paste(site, a2, sep = ""),
is.na(a2) ~ paste(site, a1, sep = ""),
TRUE ~ paste(site, paste(a1, a2, sep = ","), sep = ""))) %>%
ggplot() +
geom_segment(aes(x = label, xend = label, y = minY, yend = maxY))
我怎样才能把1和2变成图的下标呢?
2条答案
按热度按时间ybzsozfc1#
以编程方式形成表达式/bquote字符串(例如
A[2]
),然后使用scales::label_parse()
。注意,对于R的
plotmath
(这是内部实现的方式),我们需要明确逗号分隔的下标,当一个数字有一个A[1]
的“表达式”(符号)时,我们不能使用A[1,2]
,因为,2
将从视图中删除;相反,我们需要A[1*','*2]
,即数字1后跟(在数学语法中为乘法)字符串逗号,然后是数字2。注意:这几乎是How to use subscripts in ggplot2 legends [R]等几个问题的重复,尽管我找不到非常正确的措辞来解决 * 这个 * 问题。
mccptt672#
我们将标签转换为乳胶并在其上使用TeX。
DF
是问题中定义的 Dataframe ,也显示在结尾的注解中。注解
这与问题中的内容相同,只是我们将其分离出来并命名为
DF
。