首页 > 解决方案 > bquote,解析,表达式以在 ggplot 中以希腊字母和变量作为下标获取多行标签

问题描述

假设我有

paste0("Year = ",index,"\nN = ",length((dfGBD %>% filter(year==index))[[vbl]]),
                                  " Bandwidth = ",round(stats::bw.nrd(log((dfGBD %>% filter(year == index))[[vbl]])),2),
                                  "\nSkewness:", round(e1071::skewness(log((dfGBD %>% filter(year==index))[[vbl]])), 2),
                                  " Kurtosis:",round(e1071::kurtosis(log((dfGBD %>% filter(year==index))[[vbl]])),2),
                                  "\nmu[",vbl,"] = ", round(mean((dfGBD %>% filter(year==index))[[vbl]]),2),
                                  " sigma[",vbl,"] = ",round(sd((dfGBD %>% filter(year==index))[[vbl]]),2)
                                  )

一年之内sapplyindex此外,vbl是一个带有变量名称的字符串。sapply产生labels一个factor变量的向量。应用ggplot我获得类似于下一个标签:

Year = 2000
N = 195 Bandwidth = 0.09
Skewness: 0 Kurtosis: -0.56
mu[Mortality] = 7750.85 sigma[Mortality] = 1803.28

到这里,一切正常。我已经写过mu[vbl]sigma[vbl]考虑解析和下标符号来获取希腊字母,并将变量名称保存vbl为下标。

首先我尝试facet_wrap了 option labeller = "label_parsed"。我得到了一个错误,我只解决了在 backticks 之间写入字符串``,但\n没有任何效果。bquote我使用和/或parse和/或expression和/或等尝试了许多选项atop,以便获得上面描述的所需输出的多行结果。但只有得到或一行或非常难看的输出,或者主要是错误,我还看不到希腊字母。

那么我应该怎么做?

PS:正如其他人所回答stackoverflow的那样,\n在这种情况下不起作用,因此bquote建议为每行列出一个带有 's 的列表。我试过了,但后来我得到一个错误,我认为这是由于所有列表的元素数量和一个因子的标签数量不兼容(alabel可能不是list?)。

谢谢!

标签: rparsingggplot2expressionplotmath

解决方案


推荐阅读