如何在图中的文本标签中添加正负±误差?

How to add plus-minus ± error to text label in plot?

我的数据是这样的:

var1, var2, mean, std
1    , 2   , 3   , 4
etc..

我想将这些绘制成一个看起来像这样的热图,但我想在每个单元格内添加文本标签,格式如下:平均值±标准差(即平均值加减误差)。在上述情况下,对于 var1 列 = 1 和 var2 行 = 2,单元格中的值将为 3±4,其他单元格的值也类似。

它是热图并不重要,它可以是点或条的标签,我只想生成标签以便为每个标签获取字符串 "mean±std":3 ±4。就我而言,我将制作一个热图,其中颜色基于均值,例如此处:

谢谢!

您可以使用 geom_text 创建标签并使用加减号作为分隔符粘贴平均值和标准差值(\u00B1 是相应的 unicode):

dat <- data.frame(var1 = 1, var2 = 2, mean = 3, std = 4)

ggplot(dat) +
  geom_text(aes(x = 1, y = 2.5, label = paste(mean, std, sep = "\u00B1")))

您可以通过设置 parse = TRUEgeom_text 中使用 plotmath。基于@beetroot 的回答:

ggplot(dat) +
  geom_text(aes(x = 1, y = 2.5, 
                label = paste(mean, std, sep = "%+-%")), 
            parse = TRUE)

感谢 beetroot 和 Roland 的回答,这是我的最终代码(加上一些附加功能):

p1 <- ggplot(r_output, aes(var1, var2)) + 
    geom_tile(aes(fill = mean))+
    geom_text(aes(fill = mean, label = paste(round(mean, 2), round(std, 2), sep = "\u00B1")), size = 2)+            
    scale_fill_gradient(low = "red", high = "blue") +