热图决策树

作者

[编辑] 郑虎;

[审核] .

注记

Hiplot 网站

本页面为 Hiplot Treeheatr 插件的源码版本教程,您也可以使用 Hiplot 网站实现无代码绘图,更多信息请查看以下链接:

https://hiplot.cn/basic/treeheatr?lang=zh_cn

热图决策图是一种拼接热图和决策树可视化即决策图两种图形的一种可视化图形。

环境配置

  • 系统: Cross-platform (Linux/MacOS/Windows)

  • 编程语言: R

  • 依赖包: treeheatr; ggplotify

# 安装包
if (!requireNamespace("treeheatr", quietly = TRUE)) {
  install.packages("treeheatr")
}
if (!requireNamespace("ggplotify", quietly = TRUE)) {
  install.packages("ggplotify")
}

# 加载包
library(treeheatr)
library(ggplotify)

数据准备

第一列为物种种类名称,第二列为岛屿,其余列为物种特征。

# 加载数据
data <- read.delim("files/Hiplot/172-treeheatr-data.txt", header = T)

# 整理数据格式
x <- data
wrong_cols <- suppressWarnings(sapply(x, function(x) {
  if (!is.numeric(x)) {
    sum(!is.na(as.numeric(x))) > 0.7 * length(x)
  } else {
    FALSE
  }
}))
if (any(wrong_cols)) {
  ix <- which(wrong_cols)
  for (i in ix) {
    data[[i]] <- suppressWarnings(as.numeric(data[[i]]))
  }
  rm(ix)
}
rm(x, wrong_cols)

# 查看数据
head(data)
  species    island culmen_length_mm culmen_depth_mm flipper_length_mm
1  Adelie Torgersen             39.1            18.7               181
2  Adelie Torgersen             39.5            17.4               186
3  Adelie Torgersen             40.3            18.0               195
4  Adelie Torgersen               NA              NA                NA
5  Adelie Torgersen             36.7            19.3               193
6  Adelie Torgersen             39.3            20.6               190
  body_mass_g    sex
1        3750   MALE
2        3800 FEMALE
3        3250 FEMALE
4          NA   <NA>
5        3450 FEMALE
6        3650   MALE

可视化

# 热图决策树
p <- as.ggplot(function() {
  print(heat_tree(data,
    target_lab = "species",
    task = 'classification',
    show = "heat-tree",
    heat_rel_height = 0.2,
    panel_space = 0.001,
    clust_samps = T,
    clust_target = T,
    lev_fac = 1.3,
    cont_legend = F,
    cate_legend = F
  ))
})

p
图 1: 热图决策树

图示上半个图为决策图,下半个图为热图。

决策图:最上层 island 对 species 分类影响最大,根据不同条件最终可以归为不同 species。

热图:可以观测出每个物种每种条件下量的变化。

图例:对于每种分类变量而言,不同颜色表示不同种类;对于连续性变量而言,数值越高颜色越浅,反之,越深。