查看原文
其他

R语言绘制雷达图的示例

鲤小白 小白鱼的生统笔记 2022-07-05
雷达图及其在R中的绘制示例
雷达图(radar charts)又叫蜘蛛网图。传统的雷达图被认为是一种表现多维(维以上)数据的图表。它将多个维度的数据量映射到坐标轴上,这些坐标轴起始于同一个圆心点,通常结束于圆周边缘,将同一组的点使用线连接起来就称为了雷达图。
雷达图在图形表现上通常以线、面或线面叠加的方式呈现,也可以配置数据点。
如下示例,使用雷达图展示了古细菌丰度的时间动态,不同的图表示了不同的类群,雷达图的顶点为不同时间,颜色代表了不同的试验组。

(来源文献:Crop rotation of flooded rice with upland maize impacts the resident and active methanogenic microbial community)

 

接下来展示几种R语言绘制雷达图的方法示例。

 

fmsb包的雷达图


fmsb包是常用的绘制雷达图的包。

library(fmsb)

#模拟数据
#先定义每个元素的取值范围
dat1 <- data.frame(
factor1 = c(5, 0),
factor2 = c(10, 0),
factor3 = c(8, 0),
factor4 = c(6, 0),
factor5 = c(9, 0))

#再将每个对象的各元素数值叠加在下方
set.seed(1234)
dat2 <- data.frame(
factor1 = runif(3, 1, 5),
factor2 = runif(3, 1, 10),
factor3 = runif(3, 1, 8),
factor4 = runif(3, 1, 6),
factor5 = runif(3, 1, 9))

dat <- rbind(dat1, dat2)

#查看数据集结构
dat


#雷达图,详情 ?radarchart
par(mar = c(1, 2, 2, 1),mfrow = c(2, 2))
radarchart(dat, axistype = 1, seg = 5, plty = 1, vlcex = 1)
radarchart(dat, axistype = 2, pcol = topo.colors(3), plty = 1, pdensity = c(5, 10, 30),
pangle = c(10, 45, 120), pfcol = topo.colors(3))
radarchart(dat, axistype = 3, pty = 32, plty = 1, axislabcol = 'grey', na.itp = FALSE)
radarchart(dat, axistype = 1, pcol = c('#4C00FF', '#00FF4D', '#FFFF00'), pfcol = c('#4C00FF55', '#00FF4D55', '#FFFF0055'),
centerzero = TRUE, seg = 4, caxislabels = c('worst', '', '', '', 'best'))

 

ggradar包的雷达图


ggradar是ggplot2的拓展包,调用ggplot2的语法绘制雷达图。如果平时习惯ggplot2作图,那么这个包使用起来可能会比fmsb包更顺手,因为它的参数选项的名称和ggplot2的很像。

#通过连接入 github 安装
#install.packages('devtools')
devtools::install_github('ricardo-bion/ggradar', dependencies = TRUE)

library(ggradar)

#模拟数据
set.seed(1234)
dat <- data.frame(
obj = c('obj1', 'obj2', 'obj3'),
factor1 = runif(3, 0, 1),
factor2 = runif(3, 0, 1),
factor3 = runif(3, 0, 1),
factor4 = runif(3, 0, 1),
factor5 = runif(3, 0, 1))

#查看数据集结构
dat


#雷达图,详情 ?ggradar
ggradar(dat, background.circle.transparency = 0, group.colours = c('blue', 'red', 'green3'))

 

plotly包的雷达图


如果期望绘制交互式的雷达图,那么plotly包可满足需求。

#plotly 包的交互式雷达图的一个示例,详情 ?plot_ly
library(plotly)

p <- plot_ly(
type = 'scatterpolar',
fill = 'toself'
) %>%
add_trace(
r = c(39, 28, 8, 7, 28, 39),
theta = c('A','B','C', 'D', 'E', 'A'),
name = 'Group A'
) %>%
add_trace(
r = c(1.5, 10, 39, 31, 15, 1.5),
theta = c('A','B','C', 'D', 'E', 'A'),
name = 'Group B'
) %>%
layout(
polar = list(
radialaxis = list(
visible = TRUE,
range = c(0,50)
)
)
)

p


 

其它


最后容俺摆一张图,触景生情,回忆那些年快乐但再也找不回的时光。(下面的所有图都来源于网上,侵删)


 


链接
柱形图类:堆叠柱形图    分组柱形图    双向柱形图    蝴蝶图箱线图类:箱线图    提琴图    密度提琴图面积图类:饼图扇形图    圆环图    星形图    堆叠面积图散点图类:二维散点图    三维散点图    火山图    曼哈顿图曲线图类:折线图和拟合线集合可视化:韦恩图    花瓣图    UpSet图圈图:关联弦图    简单弦图    基因组变异圈图三元相图:三元图树形图:聚类树    聚类树+堆叠柱形图    聚类树+排序散点图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存