科研绘图系列:R语言雷达图(radar plot)

文摘   2024-07-16 18:13   马来西亚  

专注收集和自写可发表的科研图形的数据和代码分享,该系列的数据均可从以下链接下载:

百度云盘链接: https://pan.baidu.com/s/1M4vgU1ls0tilt0oSwFbqYQ
提取码: 请关注WX公zhong号 生信学习者 后台发送 科研绘图 获取提取码

介绍

雷达图,又称为蜘蛛网图或星形图,是一种以多轴方式显示数据的图表。它通常用于显示多个定量变量的值,这些变量被表示为从中心点向外延伸的轴。每个轴代表一个变量,而每个变量的值则通过从中心向外延伸的距离来表示。雷达图可以直观地展示多个变量之间的相对大小和关系。雷达图的特点:

  1. 多维数据比较:可以同时比较多个变量,看它们在不同维度上的表现。

  2. 综合评价:用于综合评价一个或多个对象在多个方面的表现。

  3. 趋势分析:可以观察变量随时间的变化趋势。

  4. 差异识别:通过比较不同对象的雷达图,可以快速识别它们在哪些方面存在差异。

  5. 平衡分析:在需要平衡多个方面时,雷达图可以帮助识别哪些方面需要加强或改进。

加载R包

knitr::opts_chunk$set(message = FALSE, warning = FALSE)

library(tidyverse)
# devtools::install_github("ricardo-bion/ggradar")
library(ggradar)

rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)

导入数据

data <- data.frame(
row.names = c("Student.1", "Student.2", "Student.3"),
Biology = c(7.9, 3.9, 9.4),
Physics = c(10, 20, 0),
Maths = c(3.7, 11.5, 2.5),
Sport = c(8.7, 20, 4),
English = c(7.9, 7.2, 12.4),
Geography = c(6.4, 10.5, 6.5),
Art = c(2.4, 0.2, 9.8),
Programming = c(0, 0, 20),
Music = c(20, 20, 20))

head(data)

BiologyPhysicsMathsSport
Student.17.9103.78.7
Student.23.92011.520.0
Student.39.402.54.0

数据预处理

  • 设置分组标签

plotdata <- data %>% 
tibble::rownames_to_column("group")

plotdata
GroupBiologyPhysicsMathsSport
Student.17.9103.78.7
Student.23.92011.520.0
Student.39.402.54.0

画图

  • 基础图形

ggradar(
plotdata[1, ],
values.radar = c("0", "10", "20"),
grid.min = 0, grid.mid = 10, grid.max = 20)

  • 定制化图形:修改背景

ggradar(
plotdata[1, ],
values.radar = c("0", "10", "20"),
grid.min = 0, grid.mid = 10, grid.max = 20,
# Polygons
group.line.width = 1,
group.point.size = 3,
group.colours = "#00AFBB",
# Background and grid lines
background.circle.colour = "white",
gridline.mid.colour = "grey")

  • 多组雷达图

ggradar(
plotdata,
values.radar = c("0", "10", "20"),
grid.min = 0, grid.mid = 10, grid.max = 20,
# Polygons
group.line.width = 1,
gridline.min.linetype = 1,
gridline.mid.linetype = 1,
gridline.max.linetype = 1,
group.point.size = 3,
group.colours = c("#00AFBB", "#E7B800", "#FC4E07"),
# Background and grid lines
background.circle.colour = "white",
gridline.mid.colour = "grey",
legend.position = "bottom")

生信学习者
生信教程分享,专注数据分析和科研绘图方向欢迎大家关注,也可一起探讨生信问题