R语言数据可视化|数据可视化——R语言ggplot2包绘制箱线图叠加散点图

数据可视化——R语言ggplot2包绘制箱线图叠加散点图 概述: 当每个组的数据点相对较少时,又需要显示出各组数据的分布情况时,可以采用箱线图叠加散点图的方式来表达数据。
使用工具:R语言中的ggplot2工具包
箱线图叠加散点图是数据表达中常用的一种方式。ggplot2包支持图形叠加,可以很好的实现我们想要的效果。
由于使用ggpolt2包绘制的箱线图的胡须末端没有短横线,可以采用误差条图来绘制箱线图胡须末端没有短横线。因此,可采用三个图层叠加实现:误差条图+箱线图+散点图。
以下示例中的数据来自汽车数据mtcars,将汽车发动机的缸数cyl因子化后作为分组变量,每组对应的数据为每加仑汽油行驶的英里数mpg。
示例代码如下:

rm(list = ls()) #清除工作区library(ggplot2) library(RColorBrewer)################################################### #导入数据 #使用并列箱线图叠加散点图表示四缸,六缸,八缸发动机对每加仑汽油行驶的英里数 #Group:为因子变量,表示汽车发动机的缸数 #Value:为连续变量,表示对每加仑汽油行驶的英里数 attach(mtcars) Data1 = data.frame(Group = mtcars$cyl,Value = https://www.it610.com/article/mtcars$mpg) Data1$Group = factor(Data1$Group,levels = c(4,6,8)) ####################################################使用ggplot2包生成箱线图 P1 <- ggplot(Data1,aes(x=Group,y=Value,fill=Group))+ #”fill=“设置填充颜色 stat_boxplot(geom ="errorbar",width=0.15,aes(color="black"))+ #由于自带的箱形图没有胡须末端没有短横线,使用误差条的方式补上 geom_boxplot(size=0.5,fill="white",outlier.fill="white",outlier.color="white")+ #size设置箱线图的边框线和胡须的线宽度,fill设置填充颜色,outlier.fill和outlier.color设置异常点的属性 geom_jitter(aes(fill=Group),width =0.2,shape = 21,size=2.5)+ #设置为向水平方向抖动的散点图,width指定了向水平方向抖动,不改变纵轴的值 scale_fill_manual(values = c("#E69F00", "#0072B2","#F0E442"))+#设置填充的颜色 scale_color_manual(values=c("black","black","black"))+ #设置散点图的圆圈的颜色为黑色 ggtitle("Car Milleage Data")+ #设置总的标题 theme_bw()+ #背景变为白色 theme(legend.position="none", #不需要图例 axis.text.x=element_text(colour="black",family="Times",size=14), #设置x轴刻度标签的字体属性 axis.text.y=element_text(family="Times",size=14,face="plain"), #设置x轴刻度标签的字体属性 axis.title.y=element_text(family="Times",size = 14,face="plain"), #设置y轴的标题的字体属性 axis.title.x=element_text(family="Times",size = 14,face="plain"), #设置x轴的标题的字体属性 plot.title = element_text(family="Times",size=15,face="bold",hjust = 0.5), #设置总标题的字体属性 panel.grid.major = element_blank(), #不显示网格线 panel.grid.minor = element_blank())+ ylab("Miles Per Gallon")+xlab("Number of Cylinders") #设置x轴和y轴的标题 P1 #图片保存 jpeg(file = "boxplot.jpg",width =1400,height = 1600,units = "px",res =300) #结果保存 print(P1) dev.off()

示例结果如下:
R语言数据可视化|数据可视化——R语言ggplot2包绘制箱线图叠加散点图
文章图片

箱线图叠加散点图 需要注意的是:图层叠加的先后顺序会影响绘制的结果,本示例中从底层开始的图层顺序依次为:误差条图,箱线图,散点图,误差条图处于最底层,会被填充为白色的箱线图覆盖其中间部分,散点图处于最上方,也会覆盖箱线图的内容。
【R语言数据可视化|数据可视化——R语言ggplot2包绘制箱线图叠加散点图】另外:
  • 散点图需要使用抖动的方式绘制,以避免重叠,示例中横轴为分组变量,纵轴为实际关心的值,设置抖动时需避免纵轴的值被改变,所以geom_jitter函数中仅需设置width,不设置height。
  • 如果数据中存在异常点时,箱线图也会绘制出异常点,而散点图又会绘制所有的点,使得每个异常点被绘制了两次,可以通过在绘制箱线图时将异常点的颜色设定为与背景色相同即可(使其在箱线图中不可见)。

    推荐阅读