数据可视化——R语言使用ggplot2工具包绘制组别间指标差异对比图(箱形图及误差条图)

更新时间:2023-08-03 12:53:08 阅读: 评论:0

数据可视化——R语⾔使⽤ggplot2⼯具包绘制组别间指标差异对⽐图(箱形图
及误差条图)
数据可视化——R语⾔ggplot2包绘制组别间指标差异对⽐图(箱形图及误差条图)
使⽤⼯具:R语⾔中的ggplot2⼯具包, RcolorBrewer颜⾊⼯具包
有时,我们需要对多个模型之间的性能评估的重复测量指标进⾏⽐较,如何对⽐显⽰呢?以下提供了两种⽅案:(1)箱形图;(2)差异对⽐图。
箱形图能⽅便显⽰数字数据组的四分位数,在数据表达中很常见。此处的差异对⽐图是指不同模型两两之间对应的属性指标相减后对差异值进⾏显⽰,显⽰⽅式为误差条图,此处的误差条上界为模型间差异值的上四分位数,中间的点为差异值的中值,下界为差异值的下四分位数。
⽰例中的数据为模拟⽣成的。共5个模型,每个模型都有⼀个属性指标,且每个模型的每个属性指标都进⾏了100次重复测量。如果要将你的数据进⾏显⽰,可做相应的修改。
箱形图直接对5个模型的100次测量值进⾏显⽰(不需要额外的计算)。绘制差异对⽐图时需要额外的计算,即每两两模型之间指标属性相减求出差异,然后寻找差异值的上、下四分位数和中值即可。
⽰例代码如下:
rm(list =ls()) #清除⼯作区
library(ggplot2)
library(RColorBrewer)
#⽣成模拟数据
#假设有5个模型,每个模型⼀个重复100次测量的属性(如⼀个模型100次交叉验证的准确率)
model1.attribute <-runif(100)+3 #模型1属性的100次重复测量
model2.attribute <-runif(100)+2 #模型2属性的100次重复测量
想怀二胎怀不上
model3.attribute <-runif(100)+1 #模型3属性的100次重复测量
model4.attribute <-runif(100)+0.5 #模型4属性的100次重复测量
model5.attribute <-runif(100) #模型5属性的100次重复测量
group <-c(rep("Model1",100),rep("Model2",100),rep("Model3",100),rep("Model4",100),rep("Model5",100)) #⽣成数据对应的模型分组
group <-factor(group) #转为因⼦变量
value <-c(model1.attribute ,model2.attribute,model3.attribute,model4.attribute,model5.attribute) #每个模型属性的100次重复测量
Data1 <- data.frame(group=group,value=value) #⽣成的模拟数据
>>>>>>>>>>#
#使⽤R语⾔⾃带的boxplot函数绘制箱线图
jpeg(file ="results_Value_1.jpg",width =1800,height =1600,units ="px",res =300) #结果保存保存为results_Value_1.jpg,宽⾼为1800*1600像素,分辨率为3 00dpi
par(cex.main=1.2,cex.lab=1.1) #"cex.main="设置标题的缩放倍数,"cex.lab="设置坐标轴标签(名称)的缩放倍数
boxplot(value~group,data = Data1,notch=TRUE, #添加notch=TRUE,可以得到含凹槽的箱线图
col= brewer.pal(8,"Pastel2")[1:5],main="Comparison of asssment indicators",ylab="Value") #设置填充颜⾊和标题
dev.off()
>>>>>>>>>>#
#使⽤ggplot2包⽣成箱线图
P1<-ggplot(Data1,aes(x=group,y=value,fill=group))+ #”fill=“设置填充颜⾊
geom_boxplot(notch=TRUE,size=0.5)+#添加notch=TRUE,可以得到含凹槽的箱线图,”size=“设置箱线图的边框线和胡须的线宽度
桑叶茶的作用
theme_bw()+ #背景设为⽩⾊
scale_fill_manual(values = brewer.pal(8,"Pastel2")[1:5])+ #设置填充的颜⾊
ggtitle("Comparison of asssment indicators")+ #设置总的标题
theme(legend.position="none", #不需要图例
<=element_text(angle=15,hjust =1,colour="black",family="Times",size=16), #设置x轴刻度标签的字体显⽰倾斜⾓度为15度,并向下调整1(hjust =1),字体簇为Times⼤⼩为16
<=element_text(family="Times",size=14,face="plain"), #设置x轴刻度标签的字体属性
axis.title.y=element_text(family="Times",size =16,face="plain"), #设置y轴的标题的字体属性
axis.title.y=element_text(family="Times",size =16,face="plain"), #设置y轴的标题的字体属性
plot.title =element_text(family="Times",size=16,face="bold",hjust =0.5))+#设置总的标题的字体属性
单手肩上投篮ylab("Value")+xlab("") #设置x轴和y轴的标题
P1
带有鸟字的成语
jpeg(file ="results_Value_2.jpg",width =1800,height =1600,units ="px",res =300) #结果保存
print(P1)
dev.off()
>>>>>>>>>>#
#计算各个模型属性之间的差值
model1_model2 <- model1.attribute - model2.attribute
model1_model3 <- model1.attribute - model3.attribute
model1_model4 <- model1.attribute - model4.attribute
model1_model5 <- model1.attribute - model5.attribute
model2_model3 <- model2.attribute - model3.attribute
model2_model4 <- model2.attribute - model4.attribute
model2_model5 <- model2.attribute - model5.attribute
model3_model4 <- model3.attribute - model4.attribute
model3_model5 <- model3.attribute - model5.attribute
血小板减少会有什么后果model4_model5 <- model4.attribute - model5.attribute
#⽣成数据框
da<- data.frame(model1_model2,model1_model3,model1_model4,model1_model5,
model2_model3,model2_model4,model2_model5,
model3_model4,model3_model5,
七律model4_model5)
names(da)<-c("Model1 vs. Model2","Model1 vs. Model3","Model1 vs. Model4","Model1 vs. Model5",
"Model2 vs. Model3","Model2 vs. Model4","Model2 vs. Model5",
"Model3 vs. Model4","Model3 vs. Model5",
"Model4 vs. Model5")
#计算每两两模型之间差值的25%分位数,中位数,75%分位数
da_quantile <-apply(da,2,function(x)quantile(x,c(0.25,0.5,0.75)))
Data <- data.frame(names(da),da_quantile[1,],da_quantile[2,],da_quantile[3,])
names(Data)<-c("group_diff","down_diff","median_diff","up_diff")
>>>>>>>>>>#
#绘制模型之间的属性值的差异对⽐图
P2<-ggplot(Data,aes(x=group_diff,y=median_diff))+
geom_errorbar(aes(x=group_diff, ymin=down_diff , ymax=up_diff), width=0.3, colour="black", alpha=1, size=1.3)+ #使⽤绘制误差条图的⽅法绘制模型间差值的25%分位数,中位数,75%分位数
geom_point(size =4)+  #设置点的⼤⼩(对应模型间差值的中位数)
theme(axis.ticks.y =element_blank())+  #去除y轴的刻度线
geom_vline(xintercept =0.4,group=1)+geom_hline(yintercept =0,linetype=2,size=0.8)+ #绘制x=0和y=0直线
theme(
panel.background =element_rect(fill ="transparent",colour =NA), #背景⾊置为⽩⾊小新图片
<=element_text(size=12,face="bold"), #设置x轴的刻度字体⼤⼩九宫格数字
axis.title.x=element_text(size=12,face="bold"), #设置x轴的标题字体⼤⼩
<=element_text(size=12,face="bold"))+ #设置Y轴的刻度字体⼤⼩
coord_flip()+ #坐标轴旋转
xlab("")+ylab("Differences in asssment indicators between relevant pairs")  #设置x轴,y轴的标签
P2
jpeg(file ="results_Value_3.jpg",width =2000,height =1500,units ="px",res =300) #结果保存
print(P2)
dev.off()
效果图如下:
图⼀ 使⽤R语⾔⾃带的boxplot()函数绘制的效果
图⼆ 使⽤ggplot2包绘制的效果
图三 不同模型间属性评估指标的差异对⽐图。其中,实⼼点表⽰相应模型之间的属性差值值的中位数,左边胡须表⽰下四分位数,右边胡须表⽰上四分位数。
由于使⽤ggpolt2包绘制的箱线图的胡须末端没有短横线,因此我也尝试了使⽤R语⾔⾃带的boxplot()函数绘制箱线图,效果图如图1所⽰。如果你知道如何使⽤ggplot2包绘制箱形图为胡须末端添加短横线,欢迎评论!

本文发布于:2023-08-03 12:53:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1127664.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   属性   绘制   差异   设置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图