Создание линейного графика (среднего), упорядоченного по фасетам, со стандартной ошибкой средних баров ошибок: ggplot
Привет, сообщество Stack Overflow,
У меня есть набор данных:
conc branch length stage factor
1 1000 3 573.5 e14 NRG4
2 1000 7 425.5 e14 NRG4
3608 1000 44 5032.0 P10 NRG4
3609 1000 0 0.0 P10 NRG4
FYI
> str(dframe1)
'data.frame': 3940 obs. of 5 variables:
$ conc : Factor w/ 6 levels "0","1","10","100",..: 6 6 6 6 6 6 6 6 6 6 ...
$ branch: int 3 7 5 0 1 0 0 4 1 1 ...
$ length: num 574 426 204 0 481 ...
$ stage : Factor w/ 8 levels "e14","e16","e18",..: 1 1 1 1 1 1 1 1 1 1 ...
$ factor: Factor w/ 2 levels "","NRG4": 2 2 2 2 2 2 2 2 2 2 ...
Я хотел бы создать ограненные линейные графики, чертя среднее значение +/- стандартная ошибка среднего
Я пытался экспериментировать и создавать ggplot из других (здесь и в Интернете).
Я успешно использовал сценарии, которые сделают гистограммы таким образом:
errbar.ggplot.facets <- ggplot(dframe1, aes(x = conc, y = length))
### function to calculate the standard error of the mean
se <- function(x) sd(x)/sqrt(length(x))
### function to be applied to each panel/facet
my.fun <- function(x) {
data.frame(ymin = mean(x) - se(x),
ymax = mean(x) + se(x),
y = mean(x))}
g.err.f <- errbar.ggplot.facets +
stat_summary(fun.y = mean, geom = "bar",
fill = clrs.hcl(48)) +
stat_summary(fun.data = my.fun, geom = "linerange") +
facet_wrap(~ stage) +
theme_bw()
print(g.err.f)
На самом деле, я создал граненые линейные графики с помощью этого скрипта:
`ggplot(data=dframe1, aes(x=conc, y = length, group = stage)) +
geom_line() + facet_wrap(~stage)`
изображение: postimg.org/image/ebpdc0sb7
Тем не менее, я использовал преобразованный набор данных только средних значений, SEM в другом столбце, но я не знаю, как их добавить.
Учитывая сложность (для меня) сценариев гистограммы + строки ошибок выше, я еще не смог интегрировать / синтезировать их в то, что мне нужно.
В этом случае цвет не важно иметь.
PS Прошу прощения за длинную ветку (и, возможно, излишество по некоторым деталям). Это мой первый онлайн вопрос R, так что не уверен в правильности этикета. Заранее благодарю всех за помощь!
Darian
1 ответ
В случае, если у вашего dataframe есть столбец для среднего значения, вы можете сделать что-то вроде этого:
library("dplyr")
library("ggplot2")
# Create a dummydataframe with columns mean and se
df <- mtcars %>%
group_by(gear, cyl) %>%
summarise(mean_mpg = mean(mpg), se_mpg = se(mpg))
ggplot(df, aes(x = gear, y = mean_mpg)) +
geom_bar(stat = "identity") +
geom_errorbar(aes(ymin = mean_mpg - se_mpg, ymax = mean_mpg + se_mpg)) +
facet_wrap(~cyl)