R繪圖(01)——ggplot畫柱狀圖和多圖拼接


數據集形式:

 

目標構想:

需要使用到的變量為ICEWSGOVT_bin(GV), ICEWSNGOVT_bin(NGV),Year_F(Y),GrowingSeason_Month(GSM),共4個變量。其中第一和第二變量為1和0的名義變量,需要完成的事情是,根據GSM作為分類條件,統計隨着Y的改變,GV和NGV的為1的個數。

因為由兩個數據庫,每個數據庫包含GSM=1和GSM=0的兩種條件,故而總共存在4張圖片,隨后需要將4張圖片排列在一張圖片上。

 

實現路徑(我的菜鳥思維):

1.從繪畫一個圖開始,繪畫柱狀圖需要准備好表格數據,所以應該准備好繪圖的數據,繪畫一張直方圖,目標數據格式如圖

 

 2.為了准備這個表格,就需要根據條件篩選數據,再匯總數據整理成為表格,這就涉及到分類、分組計算。所以目標是將大數據庫整理成目標表格的格式。

3.獲得數據庫之后,就可以對圖進行美化和調整,因為不設置各類參數的話,默認輸出圖片不太符合主流投稿或者寫文的規范(例如灰色底色,沒有坐標軸等)。

3.繪畫好了一張圖,就可以效仿繪制剩下的圖,最后排版。

 

最終實現效果如圖:

 

 

具體實現的代碼(無數據路徑版本):

library(reshape2)
ICE<-Data_ICEWS_Trim
ACL<-Data_ACLED_Trim

#######准備目標表格的數據##### #######data base - ICE ######
var<-c("ICEWSGOVT_bin","ICEWSNGOVT_bin","Year_F","GrowingSeason_Month") new<-ICE[var] colnames(new) <- c("GOVT","NGOVT","YEAR","GSM") sums_1 <- matrix(NA, nrow=8, ncol=3) sums_0 <- matrix(NA, nrow=8, ncol=3) for (i in 1:8){ sums_1[i,1] <- i+2010 sums_1[i,2] <- sum(new$GOVT[new$YEAR==i+2010&new$GSM==1]) sums_1[i,3] <- sum(new$NGOVT[new$YEAR==i+2010&new$GSM==1]) } for (i in 1:8){ sums_0[i,1] <- i+2010 sums_0[i,2] <- sum(new$GOVT[new$YEAR==i+2010&new$GSM==0]) sums_0[i,3] <- sum(new$NGOVT[new$YEAR==i+2010&new$GSM==0]) } sums_1<-as.data.frame(sums_1) sums_0<-as.data.frame(sums_0) colnames(sums_1)<-c("YEAR","GOV","NGOV") colnames(sums_0)<-c("YEAR","GOV","NGOV") varc<-c("YEAR") rs_data1<- melt(sums_1, id.vars = varc) rs_data0<- melt(sums_0, id.vars = varc) ###### data base - ACL ###### var2<-c("acledGOVT_bin","acledNGOVT_bin","Year_F","GrowingSeason_Month") new<-ACL[var2] colnames(new) <- c("GOVT","NGOVT","YEAR","GSM") Asums_1 <- matrix(NA, nrow=3, ncol=3) Asums_0 <- matrix(NA, nrow=3, ncol=3) for (i in 1:3){ Asums_1[i,1] <- i+2016 Asums_1[i,2] <- sum(new$GOVT[new$YEAR==i+2016&new$GSM==1]) Asums_1[i,3] <- sum(new$NGOVT[new$YEAR==i+2016&new$GSM==1]) } for (i in 1:3){ Asums_0[i,1] <- i+2016 Asums_0[i,2] <- sum(new$GOVT[new$YEAR==i+2016&new$GSM==0]) Asums_0[i,3] <- sum(new$NGOVT[new$YEAR==i+2016&new$GSM==0]) } Asums_1<-as.data.frame(Asums_1) Asums_0<-as.data.frame(Asums_0) colnames(Asums_1)<-c("YEAR","GOV","NGOV") colnames(Asums_0)<-c("YEAR","GOV","NGOV") Ars_data1<- melt(Asums_1, id.vars = varc) Ars_data0<- melt(Asums_0, id.vars = varc) #####繪圖##### library(ggplot2) library(ggpubr) ICE_1<-ggplot(rs_data1,aes(x=YEAR,y=value,fill=variable))+geom_bar(position="dodge",stat="identity") ICE_1<-ICE_1+ylab("Number")+labs(fill="Type",subtitle = "GSM=1") ICE_1<-ICE_1+ theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),panel.grid.minor =element_blank(),axis.line = element_line(colour = "Black")) ICE_1<-ICE_1+scale_y_continuous(limits =c(0, 200) ,expand = c(0,0))+scale_x_continuous(breaks = seq(2011, 2018, by = 1)) ICE_0<-ggplot(rs_data0,aes(x=YEAR,y=value,fill=variable))+geom_bar(position="dodge",stat="identity") ICE_0<-ICE_0+ylab("Number")+labs(fill="Type",subtitle = "GSM=0") ICE_0<-ICE_0+ theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),panel.grid.minor =element_blank(),axis.line = element_line(colour = "Black")) ICE_0<-ICE_0+scale_y_continuous(limits =c(0, 200) ,expand = c(0,0))+scale_x_continuous(breaks = seq(2011, 2018, by = 1)) ACL_1<-ggplot(Ars_data1,aes(x=YEAR,y=value,fill=variable))+geom_bar(position="dodge",stat="identity") ACL_1<-ACL_1+ylab("Number")+labs(fill="Type",subtitle = "GSM=1") ACL_1<-ACL_1+ theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),panel.grid.minor =element_blank(),axis.line = element_line(colour = "Black")) ACL_1<-ACL_1+scale_y_continuous(limits =c(0, 700) ,expand = c(0,0))+scale_x_continuous(breaks = seq(2017, 2019, by = 1)) ACL_0<-ggplot(Ars_data0,aes(x=YEAR,y=value,fill=variable))+geom_bar(position="dodge",stat="identity") ACL_0<-ACL_0+ylab("Number")+labs(fill="Type",subtitle = "GSM=0") ACL_0<-ACL_0+ theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),panel.grid.minor =element_blank(),axis.line = element_line(colour = "Black")) ACL_0<-ACL_0+scale_y_continuous(limits =c(0, 700) ,expand = c(0,0))+scale_x_continuous(breaks = seq(2017, 2019, by = 1)) ggarrange(ICE_1, ICE_0, ACL_1, ACL_0, labels = c("A", "B", "C","D"),ncol = 2, nrow = 2)

 


免責聲明!

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



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