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

时间:2016-05-19 07:51:59

标签: r ggplot2 heatmap geom-text

我的数据如下:

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

我想将这些绘制成一个看起来像这样的热图,但我想在每个单元格中添加文本标签,以这种方式:mean±std(即mean plus minus error)。在上面的例子中,对于var1 column = 1和var2 row = 2,单元格中的值将是3±4,对于其他单元格,值也是类似的不同值。

它是一个热图并不重要,它可能是一个点或一个条的标签,我只想生成标签,以便我得到每个标签的字符串“mean±std”:3±4 。就我而言,我将制作一个热图,其中颜色基于均值的值,例如:https://stackoverflow.com/a/14290705/1504411

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以通过设置geom_textparse = TRUE中使用plotmath。根据@ beetroot的回答:

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

答案 1 :(得分:2)

您可以使用geom_text创建标签,并使用加号 - 减号作为分隔符粘贴均值和sd值(\ 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")))

答案 2 :(得分:1)

感谢甜菜根和罗兰的回答,这是我的最终代码(加上一些花里胡哨的东西):

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") +