R語言ggplot2繪圖——柱狀圖

柱狀圖

繪製柱狀圖

數據準備

這裏是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)

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章