Получение значений, рассчитанных stat_summary с mean_cl_boot - PullRequest
3 голосов
/ 12 февраля 2020

Я строю некоторые значения X с помощью mean_cl_boot с большими доверительными интервалами

Как я могу экспортировать текст для значений fun.y = mean и fun.data = mean_cl_boot в каждой группе?

У меня есть интервал значений в mean_cl_boot, и я хотел бы построить их и экспортировать.

ggplot(iris, aes(x = Species, y = Petal.Length)) + 
geom_jitter(width = 0.5) + stat_summary(fun.y = mean, geom = "point", color = "red") + 
stat_summary(fun.data = mean_cl_boot, fun.args=(conf.int=0.9999), geom = "errorbar", width = 0.4)

Я получил график среднего (fun.y = mean) значения, с:

stat_summary(fun.y=mean, geom="text", aes(label=sprintf("%1.1f", ..y..)),size=3, show.legend=FALSE

Но я не могу к тому же с mean_cl_boot.

1 Ответ

3 голосов
/ 12 февраля 2020

Вы можете получить доступ к данным stat_summary с помощью ggplot_build.

Сначала сохраните вызов ggplot в объекте:

g <- ggplot(iris, aes(x = Species, y = Petal.Length)) + 
  geom_jitter(width = 0.5) + 
  stat_summary(fun.y = mean, geom = "point", color = "red") + 
  stat_summary(fun.data = mean_cl_boot, fun.args=(conf.int=0.9999), geom = "errorbar", width = 0.4)

Затем с помощью:

ggplot_build(g)$data[[3]]

Вы получите значения, рассчитанные с помощью mean_cl_boot:

  x group     y     ymin     ymax PANEL xmin xmax colour size linetype width alpha
1 1     1 1.462 1.386000 1.543501     1  0.8  1.2  black  0.5        1   0.4    NA
2 2     2 4.260 4.024899 4.462202     1  1.8  2.2  black  0.5        1   0.4    NA
3 3     3 5.552 5.337199 5.798202     1  2.8  3.2  black  0.5        1   0.4    NA

Чтобы получить правильные метки, вы можете сделать:

# extract the data
mcb <- ggplot_build(g)$data[[3]]

# add the labels to the plot
g + geom_text(data = mcb,
              aes(x = group, y = ymin, label = round(ymin,2)),
              color = "blue",
              vjust = 1)

результат:

enter image description here

Но, вероятно, еще лучшей альтернативой является использование пакета :

library(ggrepel)

g + geom_label_repel(data = mcb,
                     aes(x = group, y = ymin, label = round(ymin,2)),
                     color = "blue",
                     nudge_x = 0.2,
                     nudge_y = -0.2)

результат этого:

enter image description here

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