柱狀圖
繪製柱狀圖
數據準備
這裏是ggplot2中的diamonds數據框中的隨機抽取100條數據:
library(ggplot2)
set.seed(100)
small<-diamonds[sample(nrow(diamonds),100),]
small<-within(small,{
obj<-NA
val<-NA
obj<-c("a","b","c","d","e","f",rep(NA,94))
val<-c(2,1,3,4,7,5,rep(NA,94))}
)
畫出初始圖:
data1=na.omit(small[c("obj","val")])
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")
註釋:
stat=”“identity”:指定了柱狀圖的高度(y)
fill=obj:填充的柱狀圖的顏色
修改柱狀圖的寬度
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity",width=0.5)
註釋:
width=0.5
修改柱形圖的順序
data1<-within(data1,{
obj<-factor(obj,levels=c("e","f","b","c","d","a"))
})
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")
註釋:
柱狀圖的順序是根據因子水平順序來排列的:
obj<-factor(obj,levels=c(“e”,”f”,”b”,”c”,”d”,”a”))
柱條上添加文字
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.8, hjust = 0.5, color = obj), show.legend = TRUE)
註釋:
vjust:柱條上文字的縱座標的位置(垂直位置,以柱條頂面線爲原點)
hjust:柱條上文字的橫座標的位置(水平位置,以柱條頂面線的中點爲原點)
show.legend:此文本是否包含到圖例之中(NA(default),FALSE,TRUE)
主題
這裏需要先安裝ggthemes包。
library(ggthemes)
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.7, hjust = 0.5, color = obj), show.legend = TRUE)+
theme_economist()
註釋:
在ggthemes中有很多的各種主題,在這裏只使用了其中的theme_economist主題
對座標軸進行限制
ggplot(data=data1,mapping=aes(x=obj,y=val,fill=obj,group=factor(1)))+
geom_bar(stat="identity")+
geom_text(aes(label = val, vjust = -0.7, hjust = 0.5, color = obj), show.legend = TRUE)+
theme_economist()+
ylim(min(data1$val,0)*1.1,max(data1$val)*1.1)