Как сделать настраиваемую функцию для печати в соответствии с графиками в R ggplot - PullRequest
0 голосов
/ 29 января 2020

Интересно, есть ли способ автоматически рассчитать mean of one group / mean of another group и распечатать результат на графике, как на прикрепленном изображении. Я также хочу большее число, чтобы go числитель. (например, 1,82 / 1,4, а не 1,4 / 1,82. Я думаю, для этого потребуется оператор if).

Я создал код (stat_box_data_1), который автоматически вычисляет некоторую статистику. Сможет ли он сделать mean of one group / mean of another group таким же образом?

Кроме того, я хочу вставить Mean и символ % со стрелкой, как в прикрепленном. Я смог сделать все это, используя paste("Mean", 1.82/1.4, "%"). Но проблема в том, что мне приходится делать это вручную, меняя номера всякий раз, когда появляются новые данные.

# summary statistics
stat_box_data_1 <- function(y, upper_limit = max(data$mean)) {
  return(
    data.frame(
      y =  .74*upper_limit,
      label = paste('count =', length(y), '\n',
                    '   mean =', round(mean(y), 2), '\n',
                    '     median =', round(median(y), 2), '\n',
                    'min =', round(min(y), 2), '\n',
                    'max =', round(max(y), 2), '\n'
      )
    )
  )
}

# label
label1 = paste("Mean", 1.82/1.4, "%")

# boxplot
p1 <- ggboxplot(data, x = "group", y = "mean", color = "group") +
  stat_summary(fun.data = stat_box_data_1, geom = "text", color = "black", size = 3) +
  labs(x = "group", y = "mean", tag = "1") +
  annotate("text", x= 2, y = 2.5, label = label1, size = 4, fontface = "bold", color = "red") +
  annotate("text", x= 2.2, y = 2.55, label = sprintf('\u2191'), fontface = "bold", color = "red", size = 5)

p1[enter image description here][1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...