#加載函數(shù)包
library(ggplot2)
#創(chuàng)建數(shù)據(jù)集
data <- data.frame(
? name=letters[1:5],
? value=sample(seq(4,15),5),
? sd=c(1,0.2,3,2,4)
)
#查看數(shù)據(jù)集
data
#柱狀圖+誤差線(最基礎(chǔ))
ggplot(data) +
? geom_bar( aes(x=name, y=value),
? ? ? ? ? ? stat="identity",
? ? ? ? ? ? fill="skyblue",
? ? ? ? ? ? alpha=0.7) +
? geom_errorbar( aes(x=name, ymin=value-sd, ymax=value+sd),
? ? ? ? ? ? ? ? width=0.4,
? ? ? ? ? ? ? ? colour="orange",
? ? ? ? ? ? ? ? alpha=0.9,
? ? ? ? ? ? ? ? size=1.3)
#水平形式
ggplot(data) +
? geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) +
? geom_errorbar( aes(x=name, ymin=value-sd, ymax=value+sd), width=0.4, colour="orange", alpha=0.9, size=1.3) +
? coord_flip()
#矩形形式的誤差線
ggplot(data) +
? geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) +
? geom_crossbar( aes(x=name, y=value, ymin=value-sd, ymax=value+sd), width=0.4, colour="orange", alpha=0.9, size=1.3)
#直線形式的誤差線
ggplot(data) +
? geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) +
? geom_linerange( aes(x=name, ymin=value-sd, ymax=value+sd), colour="orange", alpha=0.9, size=1.3)
#直線+點形式的誤差線
ggplot(data) +
? geom_bar( aes(x=name, y=value), stat="identity", fill="skyblue", alpha=0.5) +
? geom_pointrange( aes(x=name, y=value, ymin=value-sd, ymax=value+sd), colour="orange", alpha=0.9, size=1.3)
##柱狀圖要分組
#創(chuàng)建數(shù)據(jù)集
data <- data.frame(
? name=c("a","b","c","a","b","c"),
? value=sample(seq(4,15),6),
? sd=c(1,1,1,1,1,1),
? group=c("A","A","A","B","B","B")
)
#查看數(shù)據(jù)集
data
#繪制分組柱狀圖
ggplot(data, aes(x =name, y = value, fill = group)) +
? geom_bar(stat = "identity",
? ? ? ? ? position = position_dodge(0.75),
? ? ? ? ? width=0.73)+
? geom_errorbar( aes(x=name, ymin=value-sd, ymax=value+sd,group=group),
? ? ? ? ? ? ? ? position = position_dodge(0.75),
? ? ? ? ? ? ? ? width=0.4,
? ? ? ? ? ? ? ? colour="orange",
? ? ? ? ? ? ? ? alpha=0.9,
? ? ? ? ? ? ? ? size=1.3)+
? coord_cartesian(ylim=c(3,16))+? ? #坐標從非0開始的設(shè)置方法
? labs(title = "", x = "類別", y = "值", fill = "組別")+
? scale_fill_hue(c = 40) +
? theme(legend.position="none")+
? theme_bw()+
? theme(panel.grid.major = element_blank(),
? ? ? ? ? ? ? panel.grid.minor = element_blank())+
? theme(axis.title.x = element_text(size = 16),
? ? ? ? ? ? ? axis.title.y = element_text(size = 14),
? ? ? ? ? ? ? axis.text.x = element_text(size = 14),
? ? ? ? ? ? ? axis.text.y = element_text(size = 14), #刻度
? ? ? ? ? ? ? legend.title = element_text(size = 14), #最右邊的圖例字體
? ? ? ? ? ? ? legend.key.size = unit(1.5, "lines")) #圖例大小的調(diào)整形病,這里設(shè)置為占兩個格子