简介

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

其中,第 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)

R绘图案例|基于分面的面积图相关推荐

  1. Echarts案例学习-渐变堆积面积图

    本文中使用的Echarts版本为:5.3.0   本系列主要是通过复现Apach Echarts官网上的示例来学习Echarts.目标图像网页地址:https://echarts.apache.org ...

  2. R绘图笔记 | 火山图的绘制

    参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘 ...

  3. R绘图笔记 | 小提琴图与漂亮的云雨图绘制

    参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R ...

  4. 计算机表格怎么求面积,在wps表格中怎么把数据生成面积图?

    面积图强调数量随时间而变化的程度,适用于显示有限数量的若干组数据.可以利用面积图来分析销售的数据.在这里我用3种品牌的手提电脑在 2010年四个季度的销售量作为数据源,使用"堆积面积图&qu ...

  5. 20180402-D · US Tuition Costs · ggplot2 geofacet 按地理位置分面的数据可视化 · R 语言数据可视化 案例 源码

    所有作品合集传送门: Tidy Tuesday 2018 年合集传送门: 2018 US Tuition Costs Average Tuition and Educational Attainmen ...

  6. r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...

    点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...

  7. R语言ggplot2可视化分面图(faceting)、设置每个分面的标题在右侧(right side)、并在右侧分面图的外侧添加整图的标题信息(facet title)

    R语言ggplot2可视化分面图(faceting).设置每个分面的标题在右侧(right side).并在右侧分面图的外侧添加整图的标题信息(facet title) 目录

  8. R语言ggplot2可视化分面图(facet,facet_wrap): 不同分面配置不同的数据范围、自定义每个分面的轴数据格式化形式及数据范围

    R语言ggplot2可视化分面图(facet,facet_wrap): 不同分面配置不同的数据范围.自定义每个分面的轴数据格式化形式及数据范围 目录

  9. R统计绘图 | 物种组成堆叠面积图(绝对/相对丰度,ggalluvial)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

最新文章

  1. 金蝶K/3 BOS产品培训教案
  2. 我们与Datawhale的故事!
  3. 华为5G首席科学家童文 | 5G:万物连接平台 智能世界基石
  4. android插件化-apkplug框架基本结构-01
  5. matlab 旅行商遗传算法,急求蚁群混合遗传算法在matlab上的实现以解决TSP旅行商的问? 爱问知识人...
  6. 盐务街属于一环吗_郑州步入“五环”时代,最早的“一环”原来是这里
  7. Spring boot 2.x+oauth2实现单点登录:基础准备之Spring Security
  8. Repast仿真学习
  9. 编译Android内核 For nexus 5 以及绕过Android的反调试
  10. 高斯过程、高斯过程回归、克里金模型
  11. iFunk翼只换不修强出新高度
  12. 2021年2月20日 星期六 初九 霾
  13. job用法 Java_JOB 用法小结
  14. 【Java】- 缓存之JetCache基础篇
  15. 银行接口数据包(银行名称获取)
  16. python 循环写入excel sheet_python 使用xlsxwriter循环向excel中插入数据和图片的操作...
  17. 逃离僵尸岛【最短路】
  18. 岛屿问题和昆虫越障问题以及岛屿最大面积
  19. 安卓开发-基础知识补习12
  20. python oserror路径not found_详谈Python3 操作系统与路径 模块(os / os.path / pathlib)

热门文章

  1. 户外徒步戴什么耳机比较好、最适合户外运动的五款耳机推荐
  2. 分享几个我试过的AI工具,也可以在写论文时使用
  3. IDEA创建Activiti工作流(三、Activiti工作流项目的开发)
  4. 2022好用不亏的数码产品推荐、趁着618还没结束赶紧入
  5. mit计算机博士申请英语要求,2020年麻省理工学院博士申请条件
  6. SAP报工后台配置字段描述<转载>
  7. 蚂蚁笔记(Leanote)------一款国内优秀的开源项目
  8. 电脑电源灯一闪一闪开不了机怎么办
  9. 【简易笔记】计算机视觉与深度学习(全连接神经网络、卷积) EP2
  10. 携程App网络服务通道治理和性能优化@2016