【发布时间】:2021-09-05 06:54:56
【问题描述】:
我尝试了两种方法来尝试在我的图中插入文本,以指定 R² 和 ggplot2 图中的回归斜率。
首先重要的是 R² 以 2 为上标,我已将其值和斜率值保存在我必须调用的变量中,斜率的单位是我想要的 nmol/g*h显示为 nmol⋅g⁻¹⋅h⁻¹,并且 R² 和斜率应显示在左对齐的两条线上,位于绘图的左上角。
我尝试了以下方法:
- 使用表达式、粘贴和 unicode:
text <-
expression(paste(
paste(R^2, "=", r_squared, sep = " "),
paste("Slope =", slope, "nmol\u22c5g\u207B\u00B9\u22c5h\u207B\u00B9", sep = " "),
sep = "\n"
))
- 使用 bquote 和 atop:
text <-
bquote(atop(
R^2 == .(r_squared_singledata),
"Reaction rate" == .(slope_singledata)~nmol%.%g^-1%.%h^-1))
在这两种方式中,我都将这些表达式保存在一个变量中并稍后调用:
info_box <- grobTree(textGrob(text, x = 0.01, y = 0.99,
hjust = 0, vjust = 1, gp = gpar(fontsize = 8)))
ggplot(data = mydata, aes(x,y))+
annotation_custom(info_box)
问题是,在第一种方式中,由于 unicode,我得到了转换错误。而在第二种方式中,文本居中而不是左对齐。
我发现了一个类似的问题here,但我无法调整它来解决我的问题...
有没有人知道在绘图内的两行文本中使用指数和变量的方法,可以左对齐并放置在我喜欢的任何位置?
【问题讨论】:
-
sprintf使用 unicode 的解决方案是否适合您? stackoverflow.com/q/26752779/6288065 -
@LC-datascientist 遗憾的是它没有......但我发现我的回答中描述了一种相当简单的方法