[英]How to insert or create a visual separation between groups of bars within ggplot2 in R?
[英]How to insert the difference between two bars ggplot2
我做了这个代码:
ggplot(data = df, aes(x = sex,y = weight, fill=sex))+
geom_bar(position="dodge", stat="summary",width = 0.3) +theme_classic() +
scale_y_continuous(breaks = round(seq(min(0), max(400), by = 50), digits=2),limits=c(0,400)) +
labs(x = element_blank(),y="Weight (kg)") +
labs( title= "Weight") +
scale_fill_manual(values = c("red", "black")) +
theme (plot.title=element_text( hjust=0.5, vjust=0.5, face='bold'),axis.text.x=element_text(size = 10),axis.text.y=element_text(size = 9),
axis.title.y = element_text(size = 12),legend.position = "none",
axis.title.x = element_text(size = 12))
我得到了这个情节:
但我想插入这两个条形之间的差异,类似于或类似于:
我使用了这个数据集:
set.seed(1234)
top <- data.frame(
sex=factor(rep(c("Male","Female"), each=200)),
weight=round(c(rnorm(200, mean=350, sd=5),
rnorm(200, mean=300, sd=5)))
)
这不完全是您想要的,但它是一种选择。 我们可以使用aggregate
计算均值,找到两个值之间的差异,然后将其作为geom_text
标签放在具有较低alpha
的新geom_bar
。
set.seed(1234)
df <- data.frame(
sex=factor(rep(c("Male","Female"), each=200)),
weight=round(c(rnorm(200, mean=350, sd=5),
rnorm(200, mean=300, sd=5))))
gender_means <- aggregate(df$weight, by=list(df$sex), mean)
mean_difference <- gender_means[[2]][[2]] - gender_means[[2]][[1]]
ggplot(data = df, aes(x = sex,y = weight, fill=sex))+
geom_bar(position="dodge", stat="summary",width = 0.3) +theme_classic() +
scale_y_continuous(breaks = round(seq(min(0), max(400), by = 50), digits=2),limits=c(0,400)) +
labs(x = element_blank(),y="Weight (kg)") +
labs( title= "Weight") +
scale_fill_manual(values = c("red", "black")) +
theme (plot.title=element_text( hjust=0.5, vjust=0.5, face='bold'),axis.text.x=element_text(size = 10),axis.text.y=element_text(size = 9), axis.title.y = element_text(size = 12),legend.position = "none", axis.title.x = element_text(size = 12)) +
geom_bar(aes(x=sex,y=gender_means[[2]][[2]]),stat="identity",alpha=0.5,width=0.3) +
geom_text(aes(x=sex,y=gender_means[[2]][[2]],label=ifelse(sex=="Female",paste0("Difference = ",mean_difference," kg"),"")), vjust=2.2, size=3.4)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.