R语言绘制雷达图的示例

雷达图及其在R中的绘制示例

 

雷达图( radar charts )又叫蜘蛛网图。传统的雷达图被认为是一种表现多维( 4  维以上)数据的图表。它将多个维度的数据量映射到坐标轴上,这些坐标轴起始于同一个圆心点,通常结束于圆周边缘,将同一组的点使用线连接起来就称为了雷达图。

雷达图在图形表现上通常以线、面或 线面叠加的方式呈现,也可以配置数据点。

如下示例,使用雷达图展示了古细菌丰度的时间动态,不同的图表示了不同的类群,雷达图的顶点为不同时间,颜色代表了不同的试验组。

 

(来源文献:Crop rotation of flooded rice with upland maize impacts the resident and active methanogenic microbial community)水淹稻与旱地玉米轮作对当地和活跃的产甲烷微生物群落产生影响

https://sfamjournals.onlinelibrary.wiley.com/doi/abs/10.1111/1462-2920.13041

接下来展示几种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包可满足需求。

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

  • 9
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值