2022年10月23日 星期日

[R]如何繪製條型圖(Bar chart)? geom_bar()

 

在數據分析中,直方圖(Histogram)和條型圖(Bar chart)是常用於觀察數據樣態的工具。關於直方圖的用法,可參考<[R]直方圖(Histogram)的用法>文章。

關於條型圖的用法,各位一定不陌生,尤其是經過2020年的COVID-19疫情事件,為了統計和比較各區域的確診或死亡病例,各媒體常以條型圖呈現數據。在R語言中,藉由安裝包ggplot2亦可輕鬆繪製,範例程式如下。

a.首先,利用install.packages()安裝ggplot2,並用library()導入。

#install package
install.packages(ggplot2)
#library
library(ggplot2)
b.利用data.frame將數據整理成一個dataframe。
#data
data1<-c("a","b","c","d","e","f","g","h","i","j","k","l")
data2<-c(15,6,21,43,29,11,25,31,44,33,15,31)
combinedata<-data.frame(data1,data2)
 
#輸出結果
> combinedata
   data1 data2
1      a    15
2      b     6
3      c    21
4      d    43
5      e    29
6      f    11
7      g    25
8      h    31
9      i    44
10     j    33
11     k    15
12     l    31


c.先簡單用hist()來觀察一下數據。

#hist chart
hist(as.numeric(combinedata$data2),breaks = 5)



d.利用geom_bar來繪製條型圖,但這個條型圖似乎有些混亂,若能進一步排序更好。

#bar chart
ggplot(combinedata,aes(data1,data2))+
  geom_bar(stat ='identity',color='black',fill='blue' )+
  coord_flip()+xlab("name")+ylab("value")


e.利用reorder()對數據做排序,排序的條型圖看起來清爽多了,數據也更有條理和便於觀察。

#bar chart(reorder)
ggplot(combinedata,aes(reorder(data1,as.numeric(data2)),data2))+
  geom_bar(stat ='identity',color='black',fill='blue' )+
  coord_flip()+xlab("name")+ylab("value")


f.來說說geom_bar中的stat函數,stat有兩種語法可供選擇,若是需要以"計數"作為繪製變量,可選擇stat="count",若是需要將變量(如範例中的data2)的"數值"作為繪製變量,可選擇stat="identity"。下列是用stat="count"來說明的範例。

#bar chart(count)
ggplot(combinedata,aes(data2))+
  geom_bar(stat ='count',color='black',fill='blue',width = 2)+
  coord_flip()+xlab("value")+ylab("count")


-----如果文章對您有幫助,打開微信掃一掃,請作者喝杯咖啡。-----



沒有留言:

張貼留言