R绘图案例|基于分面的面积图
创始人
2024-03-16 18:45:31

简介

最近参加一个统计建模的比赛。模型建模后,需要展示不同模型的性能指标,数据如下所示:

其中,第 1 列是不同样本,共376条。第 2-4 列是随机森林得到的结果,第 5-7 列是XGBoost的结果。一共使用了三种评价指标(分类数据:准确率,召回率和 F1 得分)。

对于这样的数据,读者会使用这么的方式进行可视化?欢迎文末留言交流~

小编当时想到的是,使用面积图展示,最终图形如下:

结论:从图中可以看出,两种集成算法对于 376 个叶类分类结果的评估指标都比较接近于 1,说明这两种方法整体效果比较满意。 但是对于 XGBoost 来说,小于 1 的部分更多,说明某些叶类分类效果差的情况更多。

注意:如果不是这个方向,可能看的不大懂。但是没关系,学会绘制,并将其用到自己的领域即可。在公众号后台回复[建模比赛案例图形]即可免费获取。

接下来,将展示整个绘制过程。

加载数据

library(readxl)   # 加载 Excel 数据集
library(ggplot2)  # 绘制图形
library(tidyverse) 
library(cowplot)  # 合并图形
library(viridis)  # 图形配色
library(showtext) # 解决中文字体显示问题
showtext_auto()

使用 readxl 包中的 read_excel() 加载 sheet=1 的数据集。并修改数据列名预览如下:

dat = read_excel("test.xlsx",sheet=1,na="NA")
colnames(dat) = c("Id",paste("X",1:6,sep=''))
head(dat)

使用 Tidyverse 包中的 pivot_longer() 将宽表转化为长表,具体教程可见:《R语言教程》。此时得到 ggplot2 所需的数据类型。

注意:小编这里将不同评价指标单独绘制,最后进行合并。

dat %>% select(c(Id,X1,X4)) %>% rename("随机森林"=X1, "XGBoost"=X4) %>% pivot_longer(cols = c("随机森林","XGBoost"),names_to = "method",names_transform = list(method = as.character),values_to = "Acc") -> dat1

绘制单个评价指标结果

先绘制准确率的图形,使用的几何对象为:geom_area(),并利用 facet_wrap() 对方法(method)进行分面。之后,对主题以进行修改。使用自定义的颜色修改配色。

cols <- c("#85BA8F", "#A3C8DC","#349839","#EA5D2D","#EABB77","#F09594")
p1 = ggplot(dat1) + geom_area(aes(Id,Acc),fill = cols[1]) + facet_wrap(vars(method),nrow = 2,strip.position = "top") +theme_bw() + ylab("精确率") + xlab("叶类") + #主题设置theme(panel.grid = element_blank()) 
p1

同理,绘制其他两种指标体系的结果。这里就不放出来了,完整代码见公众号,回复【建模比赛案例图形】即可免费获取,或者文末。

合并图形

最后使用 cowplot 包中的 plot_grid() 将三个指标图形进行合并

plot_grid(p1,p2,p3,ncol = 3)

完整代码

# install.packages("readxl")
library(readxl)
library(ggplot2)
library(tidyverse)
library(cowplot)
library(viridis)
library(showtext)
showtext_auto()### 绘制不同方法的区域图===========
dat = read_excel("test.xlsx",sheet=1,na="NA")
colnames(dat) = c("Id",paste("X",1:6,sep=''))
head(dat)dat %>% select(c(Id,X1,X4)) %>% rename("随机森林"=X1, "XGBoost"=X4) %>% pivot_longer(cols = c("随机森林","XGBoost"),names_to = "method",names_transform = list(method = as.character),values_to = "Acc") -> dat1
head(dat1)
cols <- c("#85BA8F", "#A3C8DC","#349839","#EA5D2D","#EABB77","#F09594")#==
p1 = ggplot(dat1) + geom_area(aes(Id,Acc),fill = cols[1]) + facet_wrap(vars(method),nrow = 2,strip.position = "top") +theme_bw() + ylab("精确率") + xlab("叶类") + #主题设置theme(panel.grid = element_blank()) 
p1#==
dat %>% select(c(Id,X2,X5)) %>% rename("随机森林"=X2, "XGBoost"=X5) %>% pivot_longer(cols = c("随机森林","XGBoost"),names_to = "method",names_transform = list(method = as.character),values_to = "Acc") -> dat2p2 = ggplot(dat2) + geom_area(aes(Id,Acc),fill = cols[2]) + facet_wrap(vars(method),nrow = 2,strip.position = "top") +theme_bw() + ylab("召回率") + xlab("叶类") + #主题设置theme(panel.grid = element_blank())
p2#==
dat %>% select(c(Id,X3,X6)) %>% rename("随机森林"=X3, "XGBoost"=X6) %>% pivot_longer(cols = c("随机森林","XGBoost"),names_to = "method",# names_transform = list(method = as.factor),values_to = "Acc") -> dat3p3 = ggplot(dat3) + geom_area(aes(Id,Acc),fill = cols[4]) + facet_wrap(vars(method),nrow = 2,strip.position = "top") +theme_bw() + ylab("F1得分") + xlab("叶类") + #主题设置theme(panel.grid = element_blank())
p3
#== 合并图形
plot_grid(p1,p2,p3,ncol = 3)

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...