Я просто хочу добавить в свои графики текст о реальных средствах и стандартном отклонении, когда работаю с одним или несколькими результатами. см. изображения ниже для справки. Код ниже. Если какой-либо обновленный пакет справится с этим, пожалуйста, дайте мне знать. Обратите внимание, что я хочу иметь реальные средства и SD (значения). Спасибо
(реальные значения вместо среднего (стандартное отклонение), пожалуйста)
library(tidyverse)
df = data.frame(
year = c("2019","2020", "2021","2022"),
math = rnorm(100,10,2),
science = rnorm(100,5,1)
)
df %>%
ggplot(., aes(x = year, y = math,
group = 1)) +
stat_summary(geom = "line",
fun = "mean",
width=0.2,
size=1.2) +
stat_summary(
geom='errorbar',
fun = "mean",
width=0.2,
size=1.2
) +
theme_bw()
#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#> ℹ Please use `linewidth` instead.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
#> Warning in stat_summary(geom = "line", fun = "mean", width = 0.2, size = 1.2):
#> Ignoring unknown parameters: `width`
df %>%
pivot_longer(-year) %>%
ggplot(., aes(x = year, y = value, color = name, group = name)) +
stat_summary(geom = "line",
fun = "mean",
width=0.2,
size=1.2) +
stat_summary(
geom='errorbar',
fun = "mean",
width=0.2,
size=1.2
) +
theme_bw()
#> Warning in stat_summary(geom = "line", fun = "mean", width = 0.2, size = 1.2):
#> Ignoring unknown parameters: `width`
Created on 2024-07-06 with reprex v2.1.0
Код ниже не использует ggplot для вычисления агрегированной статистики, вместо этого он использует dplyr summarise
.
Затем geom_*
и не stat_summary
добавьте в сюжет нужные слои.
На оба графика добавьте слой geom_errorbar
.
library(tidyverse)
set.seed(2024)
df <- data.frame(
year = c("2019","2020", "2021","2022"),
math = rnorm(100,10,2),
science = rnorm(100,5,1)
)
df %>%
summarise(
y = mean(math),
se = sd(math),
ymin = y - se,
ymax = y + se,
.by = year
) %>%
mutate(year = as.integer(as.character(year))) %>%
ggplot(aes(year, y)) +
geom_line(linewidth = 1.2) +
geom_errorbar(aes(ymin = ymin, ymax = ymax), linewidth = 1.2) +
geom_label(aes(label = paste0(round(y, 1), " (", round(se, 1), ")")),
fill = "yellow", vjust = -0.5) +
theme_bw()
df %>%
pivot_longer(-year) %>%
summarise(
y = mean(value),
se = sd(value),
ymin = y - se,
ymax = y + se,
.by = c(year, name),
) %>%
mutate(year = as.integer(as.character(year))) %>%
ggplot(aes(year, y)) +
geom_line(aes(color = name), linewidth = 1.2) +
geom_errorbar(aes(ymin = ymin, ymax = ymax, color = name), linewidth = 1.2) +
geom_label(aes(label = paste0(round(y, 1), " (", round(se, 1), ")")),
fill = "yellow", vjust = -0.5) +
theme_bw()
Created on 2024-07-07 with reprex v2.1.0
@ Луис, ты ясно дал понять, что я был идиотом. То, что вы спросили, имеет смысл, а не мой предыдущий ответ :( Смотрите теперь после редактирования.
вы проделали отличную работу, и код работает отлично. большое спасибо, @rui-barradas
Спасибо, Руи. Мне было непонятно, я хочу иметь значения, а не текст. Поэтому что-то вроде 9 (0,4) вместо «среднее (sd)». Спасибо