Я хотел бы развить отличный ответ, который получил на ранее заданный вопрос:
График пропорции в пределах факторного уровня, а не счет в ggplot2
Iнадеялся построить на коде:
var1 <- c("Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left","Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left")
var2 <- c("Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", NA, "Slightly lower","Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly lower", "Higher", "Higher", "Higher", NA, "Slightly lower")
df <- as.data.frame(cbind(var1, var2))
library(dplyr)
library(ggplot2)
df %>%
na.omit() %>%
group_by(var1, var2) %>%
summarise(n = n()) %>%
mutate(n = n/sum(n)) %>%
ungroup() %>%
ggplot() + aes(var2, n, fill = var1) +
geom_bar(position = "dodge", stat = "identity") +
labs(x="Left or Right",y="Count")+
scale_y_continuous() +
scale_fill_discrete(name = "Answer:")+ theme_classic()+
theme(legend.position="top") +
scale_fill_manual(values = c("black", "red"))
Добавить бары ошибок в виде 95% доверительных интервалов для каждого бара на моем графике. Я попытался добавить термин
upperE=(1.96*sqrt(n/sum(n))*(1-(n/sum(n)))/n), lowerE=(-1.96*sqrt(n/sum(n))*(1-(n/sum(n)))/n).
Но, увы, я продолжаю получать ошибки ...
Я также попытался создать совершенно новый фрейм данных для графа, таким образом:
var1 <- c("Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left","Left", "Right", NA, "Left", "Right", "Right", "Right", "Left", "Left", "Right", "Left", "Left","Left", "Right", "Left", "Right", "Right", "Right", "Left", "Left", "Right", NA, "Left", "Left")
var2 <- c("Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", NA, "Slightly lower","Higher", "Lower", NA, "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly higher", "Higher", "Higher", "Higher", "Slightly higher","Higher", "Lower", "Slightly higher", "Slightly higher", "Slightly higher", "Lower", "Slightly lower", "Higher", "Higher", "Higher", NA, "Slightly lower")
df <- as.data.frame(cbind(var1, var2))
dat <- df %>%
na.omit() %>%
group_by(var1, var2) %>%
summarise(n = n()) %>%
mutate(prop = n/sum(n),upperE=1.96*sqrt(n/sum(n))*(1-(n/sum(n)))/n, lowerE=-1.96*sqrt(n/sum(n))*(1-(n/sum(n)))/n)
test <- ggplot(dat, aes(x=var2, y = prop, fill = var1))+
geom_bar(position = "dodge", stat = "identity") + geom_errorbar(aes(ymin = lowerE, ymax = upperE),position="dodge")+
labs(x="Answer",y="Proportion")+
scale_fill_discrete(name = "Condition:")+ theme_classic()+
theme(legend.position="top")
, который дает мне бары ошибок, но расположен в 0 на оси Y, не на вершине каждого бара ...
У кого-нибудь есть предложения? Спасибо!