天天看点

数据可视化——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轴的字体属性以及图例的字体属性都进行了相应的设置。

继续阅读