天天看點

資料可視化——R語言使用ggplot2工具包繪制精美的條形圖資料可視化——R語言使用ggplot2工具包繪制精美的條形圖

資料可視化——R語言使用ggplot2工具包繪制精美的條形圖

概述:使用R語言的ggplot2工具包繪制精美的條形圖

使用工具:R語言中的ggplot2工具包, RcolorBrewer顔色工具包

ggplot2是R語言中功能強大的繪圖工具包。ggplot2包的目标是提供一個全面的、基于文法的、連貫一緻的圖形生成系統,允許使用者建立新穎的、有創新性的資料可視化圖形。ggplot2包的繪圖時具有圖層的概念,可控性很強,熟練掌握繪圖時的各種參數設定需要多花功夫。

RcolorBrewer為R語言提供了一套很好的配色方案,具體使用可以參考前人的描述:https://blog.csdn.net/lishangyin88/article/details/60476527

下面展示一個自己的使用ggplot2包繪制條形圖的示例,要使繪制的條形圖更美觀,需要設定很多參數,其中參數的設定也參考了前人的工作。

示例中使用的資料如下:

Group Attribute Value
group1 Attribute_1 0.684
group1 Attribute_2 1.669
group1 Attribute_3 1.962
group1 Attribute_4 2.992
group1 Attribute_5 2.043
group2 Attribute_1 4.905
group2 Attribute_2 0.008
group2 Attribute_3 0.184
group2 Attribute_4 0.199
group2 Attribute_5 0.067

其中,Group指定了組别,共兩個組别;Attribute指定了每個組别的屬性,每個組别共5個屬性;Value指定了每個組别每個屬性的取值。

示例代碼如下:

rm(list=ls()) #清除工作區

library(ggplot2)
library(RColorBrewer)

#生成模拟的資料
Group <- c(rep("group1",5),rep("group2",5)) #組别變量
Attribute <- c(paste("Attribute_",1:5,sep=""),paste("Attribute_",1:5,sep="")) #每個組别的屬性
Value <- c(0.6840,1.669,1.962,2.992,2.043,4.905,0.0080,0.1840,0.1990,0.067) #不同組别不同屬性的取值
Data <-data.frame(Group=Group,Attribute=Attribute,Value=Value) #生成模拟資料對應的資料框

Data$Value <- round(Data$Value,digits = 2) #保留兩位小數
#因子化屬性,調整levels中屬性的順序可相應修改不同屬性顯示時在x軸中的排序
Data$Attribute <-factor(Data$Attribute,levels=c("Attribute_1","Attribute_2","Attribute_3","Attribute_4","Attribute_5")) 

P <- ggplot(data=Data,aes(x=Attribute,y=Value,fill=Group))+ #建立繪圖的基本圖層,"data="指定需要顯示資料的資料框,"x="指定x軸的取值,"y="指定Y軸的取值,"fill="指定圖填充的顔色
  geom_bar(stat = "identity",position = "dodge")+ #繪制條形圖,position = "dodge"設定條形圖不堆疊顯示
  geom_text(aes(label=Value),position=position_dodge(width = 1),vjust=-0.5,color="black",size=5) + #在條形圖上方0.5處(vjust=-0.5)以黑色(color="black")字型大小為5顯示(size=5)數值大小
  scale_fill_manual(values = brewer.pal(12, "Paired")[c(1,5)])+ #設定填充的顔色
  theme_bw()+ #讓刻度線和網格線的顔色更協調一些
  theme(axis.text.x=element_text(angle=15,hjust = 1,colour="black",family="Times",size=20), #設定x軸刻度标簽的字型顯示傾斜角度為15度,并向下調整1(hjust = 1),字型簇為Times大小為20
    axis.text.y=element_text(family="Times",size=16,face="plain"), #設定y軸刻度标簽的字型簇,字型大小,字型樣式為plain
    axis.title.y=element_text(family="Times",size = 20,face="plain"), #設定y軸标題的字型屬性
    panel.border = element_blank(),axis.line = element_line(colour = "black",size=1), #去除預設填充的灰色,并将x=0軸和y=0軸加粗顯示(size=1)
    legend.text=element_text(face="italic", family="Times", colour="black",  #設定圖例的子标題的字型屬性
                             size=16),
    legend.title=element_text(face="italic", family="Times", colour="black", #設定圖例的總标題的字型屬性
                              size=18))+ 
  ylab("Value")+xlab("") #設定x軸和y軸的标題
P
jpeg(file = "results_Value.jpg",width =4800,height = 3000,units = "px",res =300) #結果儲存儲存為results_Value.jpg,寬高為4800*3000像素,分辨率為300dpi
print(P)
dev.off()
           

繪制的條形圖的結果如下:

資料可視化——R語言使用ggplot2工具包繪制精美的條形圖資料可視化——R語言使用ggplot2工具包繪制精美的條形圖

如上圖所示,我将ggplot2繪圖時預設的灰色填充背景改為了白色,條形圖的填充顔色來自于RcolorBrewer包中的Paired中的1号和5号色(scale_fill_manual(values = brewer.pal(12, “Paired”)[c(1,5)])),并在條形圖上顯示了對應的數值大小。另外,X軸和Y軸的字型屬性以及圖例的字型屬性都進行了相應的設定。

繼續閱讀