初探ggplot2 geom__制作面積圖


    大家大概都對如下信息圖並不陌生,該圖用100%堆積面積圖的方式來表現不同時期不同國家人數所占的比例。這是一種很有意思的表達方式,而面積圖也是很常用的數據圖表,現在讓我們一起來看看如何在R里用ggplot2和plot.area來制作一個面積圖。
 
        
       在制作圖表之前,首先我們先創建一些隨機示例數據。R代碼如下:
 
  1.  1 # 創建隨機數
     2 set.seed(3)
    3 # 創建時間序列(0-20的time step) 4 t.step<-seq(0,20)
    5 # 創建十組變量名(從a到j) 6 grps<-letters[1:10]
    7 # 創建一個由隨機數組成的十組變量的時間序列 8 grp.dat<-runif(length(t.step)*length(grps),5,15)
    9 # 為繪圖而創建所需的dataframe 10 grp.dat<-matrix(grp.dat,nrow=length(t.step),ncol=length(grps)) 11 grp.dat<-data.frame(grp.dat,row.names=t.step)
  2.  
       數據結果如圖所示:

    
    接下來,我們用plot.area來繪制一個簡易的面積圖,代碼如下:
  1. 1 source("https://gist.github.com/fawda123/6589541/raw/8de8b1f26c7904ad5b32d56ce0902e1d93b89420/plot_area.r")
    2 plot.area(grp.dat)

     

    效果如下:
 

 
    而對於plot.area,有很多參數可以進行調整來得到不同效果的圖,比如顏色,坐標名稱,是否100%堆積等。具體參數設置可參考如下:
    
    若我們調整顏色:
  1. 1 plot.area(grp.dat,col=c('red','lightgreen','purple'))
    得到的效果如下:

   接下來我們看看如何用ggplot2來繪制一個面積圖。在繪圖之前,首先我們需要轉換我們的數據格式,需要將多個列匯總到一個變量列(variable)和一個數值列(value), 轉置數據的代碼如下:
  1. 1 p.dat<-data.frame(step=row.names(grp.dat),grp.dat,stringsAsFactors=F)
    2 p.dat<-melt(p.dat,id='step')
    3 p.dat$step<-as.numeric(p.dat$step)
   接下來,我們需要導入ggplot2,以及繪制面積圖,代碼如下:
  1. 1 # 導入包
    2 require(ggplot2)
    3 require(reshape)
    4 require(gridExtra)
    
    6 # 繪制面積圖
    7 p<-ggplot(p.dat,aes(x=step,y=value))
    8 p1<-p + geom_area(aes(fill=variable))+ theme(legend.position="bottom")
    9 p2<-p + geom_area(aes(fill=variable),position='fill')

     

 
   我們來看一下p1和p2分別的效果:
  
 
             
 
 
    當然,geom有更多好玩的應用,具體可以戳:http://docs.ggplot2.org/current/geom_area.html
 
 
 
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM