Как добавить плюс-минус ± ошибка к текстовой метке на графике?

Мои данные выглядят так:

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

Я хочу нанести их на тепловую карту, похожую на эту, но я хочу добавить текстовые метки внутри каждой ячейки в следующем стиле: среднее ± стандартное (т. е. среднее плюс минус ошибка). в приведенном выше случае значение в ячейке будет 3 ± 4 для столбца var1 = 1 и строки var2 = 2, и аналогичные значения для других ячеек.

Неважно, что это тепловая карта, это может быть метка к точке или полосе, я просто хочу сгенерировать метки, чтобы получить строки «среднее ± стандартное значение» для каждой метки: 3 ± 4. В моем случае я буду создавать тепловую карту, где цвета основаны на значении среднего, например здесь: https://stackoverflow.com/a/14290705/1504411

Спасибо!


person dval    schedule 19.05.2016    source источник


Ответы (3)


Вы можете использовать математику в geom_text, установив parse = TRUE. На основе ответа @beetroot:

ggplot(dat) +
  geom_text(aes(x = 1, y = 2.5, 
                label = paste(mean, std, sep = "%+-%")), 
            parse = TRUE)
person Roland    schedule 19.05.2016
comment
спасибо, это было правильное мышление, но почему-то %+-% не сработало, но сработало ± из u/beetroot. - person dval; 19.05.2016
comment
Если это не сработало, вы, вероятно, используете старую версию ggplot2. - person Roland; 20.05.2016

Вы можете создавать метки с помощью geom_text и вставлять средние значения и значения sd со знаком плюс-минус в качестве разделителя (± — соответствующий юникод):

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")))
person erc    schedule 19.05.2016

Благодаря ответу свеклы и Роланда это был мой последний код, который сработал (плюс некоторые навороты):

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") +
person dval    schedule 19.05.2016