ggplot绘制带误差线的柱状图
- 利用ggplot2
- 数据格式转换并做统计计算
- 绘制图形
## 模拟
## 导入包
library(ggplot2)
library(reshape2)
library(RColorBrewer)
## 载入数据
df <- iris
df <- melt(df, id="Species", variable.name="Attribute", value.name = "Size")
mycol= brewer.pal(n = 12, name = "Set3")
## 统计 3种鸢尾花形态数据数据均值、标准差、标准误
mean <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=mean)
sd <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=sd)
len <- aggregate(df$Size, by=list(df$Species, df$Attribute), FUN=length)
df_res <- data.frame(mean, sd=sd$x, len=len$x)
colnames(df_res) = c("Species", "Attribute", "Mean", "Sd", "Count")
str(df_res)
df_res$Se <- df_res$Sd/sqrt(df_res$Count) ### 计算标准差
### ggplot 绘图 (标准差:误差线)
ggplot(df_res, aes(x=Attribute, y=Mean, fill=Species)) +
geom_bar(stat="identity", position=position_dodge(),color="black", width=.6) +
scale_fill_manual(values = mycol) +
geom_errorbar(aes(ymin=Mean-Sd, ymax=Mean +Sd),position=position_dodge(.6), width=.2)
theme_bw()
ggplot(df_res, aes(x=Attribute, y=Mean, fill=Species)) +
geom_bar(stat="identity", position=position_dodge(),color="black", width=.6) +
scale_fill_manual(values = mycol) +
geom_errorbar(aes(ymin=Mean-Sd, ymax=Mean +Sd),position=position_dodge(.6), width=.2) +
theme_bw()