1

我的数据如下所示:

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

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

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

谢谢!

4

3 回答 3

4

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

ggplot(dat) +
  geom_text(aes(x = 1, y = 2.5, 
                label = paste(mean, std, sep = "%+-%")), 
            parse = TRUE)
于 2016-05-19T08:31:32.283 回答
3

您可以使用 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")))
于 2016-05-19T08:02:56.720 回答
2

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

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") +
于 2016-05-19T20:17:13.093 回答