科研绘图系列:R语言山脊图(Ridgeline Chart)

时间:2024-10-04 20:03:13

在这里插入图片描述

介绍

山脊图(Ridge Chart)是一种用于展示数据分布和比较不同类别或组之间差异的数据可视化技术。它通常用于展示多个维度或变量之间的关系,以及它们在不同组中的分布情况。山脊图的特点:

  1. 多变量展示:山脊图可以同时展示多个变量的分布情况,允许用户比较不同变量之间的关系。

  2. 重叠的密度曲线:在山脊图中,每个变量的密度曲线会重叠显示,形成一种“山脊”的视觉效果,从而可以直观地看出不同变量之间的分布差异。

  3. 颜色编码:不同组或类别的数据可以用不同的颜色表示,使得比较变得更加直观。

  4. 透明度调整:通过调整曲线的透明度,可以减少重叠部分的混乱,使得观察更加清晰。

  5. 交互性:交互式的山脊图允许用户通过悬停或点击来查看特定变量或组的详细信息。

  6. 数据分布的直观展示:山脊图可以展示数据的分布形状,包括偏态、峰态等分布特征。

  7. 适用于高维数据:山脊图特别适合于展示高维数据集,因为它可以有效地展示多个变量之间的关系。

  8. 可扩展性:山脊图可以扩展到包含更多变量或组,尽管随着变量数量的增加,图的可读性可能会降低。

  9. 美观性:山脊图具有较高的视觉吸引力,可以吸引观众的注意力,同时提供丰富的信息。

  10. 统计信息的整合:山脊图可以结合其他统计方法,如聚类分析或主成分分析,来进一步探索数据的内在结构。

加载R包

knitr::opts_chunk$set(warning = F, message = F)
# Libraries
library(tidyverse)
library(ggridges)
  • 1
  • 2
  • 3
  • 4

导入数据

数据可从以下链接下载(画图所需要的所有数据):

  • 百度云盘链接: /s/1Y3qjaMVJL8xEfEsDUMSqTA

  • 提取码: ydk5

data <- ("./inputdata/", header = TRUE, sep = ",")

head(data)
  • 1
  • 2
  • 3

在这里插入图片描述

数据预处理

  • 数据从宽变成长数据

  • 按照value大小排序

plotdata <- data %>% 
  tidyr::gather(key = "text", value = "value") %>%
  dplyr::mutate(text = gsub("\\.", " ",text)) %>%
  dplyr::mutate(value = round((value),0)) %>%
  dplyr::filter(text %in% c("Almost Certainly","Very Good Chance","We Believe",
                            "Likely","About Even", "Little Chance", 
                            "Chances Are Slight", "Almost No Chance")) %>%
  dplyr::mutate(text = forcats::fct_reorder(text, value))

head(plotdata)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

画图

  • 基础图
ggplot(plotdata, aes(x = value, y = text, fill = text)) +
  geom_density_ridges() +
  theme_ridges() + 
  theme( = "none")
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

  • 不同形状
ggplot(plotdata, aes(x = value, y = text, fill = text)) +
  geom_density_ridges(alpha=0.6, stat="binline", bins=20) +
  theme_ridges() +
  theme(
      ="none",
       = unit(0.1, "lines"),
       = element_text(size = 8)
  ) +
  xlab("") +
  ylab("Assigned Probability (%)")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述
结果:不同分组在X轴上的密度分布情况,从图中可以看到Almost Certainly分组具有最大的分布。

总结

ggridges提供了画山脊图的ggplot格式,极大方便了绘图。