R语言多种包绘制雷达图
- 前言
- R语言中已有的雷达包
- ggradar函数
- radarchart函数
- 碎碎念
- 参考资料
前言
第一次用文档记录,排版,文字表达比较混乱,如果有对R雷达图感兴趣的小伙伴,可以一起讨论啊!
会根据自己对R绘制雷达的了解,不断补充,加油!
最近出的报告需要绘制雷达图,用excel绘制的雷达图,简单好看,但是这需要整理好图片放入报告中(可能自己不熟练,或许也可用excel展现),耗时耗力,因此采用R对它进行复现
excel:
R语言中已有的雷达包
目前,R语言已有多种包可以绘制雷达图,但各种包都有优缺点,记录下,方便自己在使用时节省时间。查阅相关资料,按照受欢迎度来介绍绘制雷达图的函数。
ggradar函数
问题
就目前整理的数据而言,没有发现ggradar包更方便画图?它是ggplot的拓展包,是能够结合ggplot函数一起使用嘛?
ggradar函数中常用参数介绍:
参数 | 意义 |
---|---|
plot.data | 数据,第一列作为group, 一行代表一组 |
values.radar | 雷达图上轴线上显示的占比,默认为0%,50%,100%;就算改变,也只能够出现3个数值 |
axis .labels | 列变量的名字 |
grid.label.size | 雷达图中轴值大小 |
axis.label.size | 雷达图各变量文本标签的大小 |
group.ponit.size | 雷达图中各连线点的大小 |
legend.title | 图例的名称, 默认为没有 |
plot.title | 图的名称,默认为无 |
legend.text.size | 图例的文本大小,默认为14 |
plot.legend | 是否显示图例,默认为显示 |
group.colour | 改变线条的颜色 |
axis.line.colour | 雷达图轴上的线的颜色 |
legend.position | 图例位置,默认左边 |
background.circle.colour | 雷达图背景色 |
发现的缺点:
1.values.radar 默认值为0%, 50%, 100%,这个参数只能够设置三个数值,所以并不能像excel一样体现点上的数值
2.不能够改变线的类型
代码:
#ggradar需要从外部安装
install.packages('devtools')
library(devtools)
install_github("ricardo-bion/ggradar")
#绘制雷达图
library(ggradar)
ggradar(data)
radarchart函数
在没有ggradar函数之前,用来绘制雷达图的包,尝试一下,看否把excel绘制的雷达图复现
radarchart函数中常用参数的介绍:
参数 | 意义 |
---|---|
df | 数据框;第一行为最大值,第二行为最小值,不得少于三行 |
axistype | 轴上的标签; 0表示没有,1表示每条线的标签,2表示最大值的标签,3表示两者都有 |
seg | 雷达分为多少格 |
vlables | 变量标签 |
vlcex | 变量标签字体大小 |
pcol | 线条颜色 |
pfcol | 填充颜色 |
plwd | 线条宽度 |
plty | 线条类型;使用数字1-6或者字符(“solid", “dashed”, “dotted”, dotdash", “longdash”, “twodash”).使用plty=0或者plty="blank"表示不显示线条 |
pty | 点的类型,不能改变大小? |
cglcol | 网格线颜色 |
cglty | 网格线类型 |
cglwd | 网格线宽度 |
axislabcol | 轴标签和数字的颜色,默认为”蓝色“ (这个参数变化,与最大值和最小值有关,与seg参数有关) |
caxislabels | 字符向量,用作中心轴上的标签 |
发现的缺点:
1.需要设置最大值和最小值,这两行与seg参数、axislabcol参数相关,其中一个变化,另外两个也要变化;
2.图例设置,会根据窗口变化而变化
代码:
#第二种方法
library(fmsb)
#前两行,需要设置最大值和最小值
max_min <- t(data.frame(max = rep(0.7, 30), min = rep(0, 30)))
data_new <- rbind(max_min, data_1) %>%data.frame()#取一组数据演示
data_example <- data_new[c("max", "min", "四班","五班"),]radarchart(data_example,seg = 7,axistype = 1,pcol = c("#00AFBB", "#E7B800"),cglcol = "grey",plty = 1,plwd = 2,pty = c(16,18),cglty = 1,cglwd = 0.8,axislabcol = "grey",vlcex = 0.7,vlables = colnames(data_example),caxislabels = c(0, 0.1,0.2, 0.3, 0.4,0.5,0.6,0.7))
legend(x = "bottomleft", legend = rownames(data_example[-c(1,2),]), horiz = TRUE,bty = "n", pch = 20 , col = c("#00AFBB", "#E7B800"),text.col = "black", cex = 1, pt.cex = 1.5
)
基本上复现了excel,还需要美化一下
碎碎念
好想自己做包啊,但是代码又那么烂,有没有好心人改善一下这两包的缺点,或者有没有大佬熟悉ggradar函数,它是不是可以用ggplot函数弥补它自身包的不足?我尝试将线条类型的代码加入,但是并没有起作用!或者有没有更好的包啊?
参考资料
ggradar绘制多边形雷达图
R实战|雷达图(Radar Chart)
R语言绘制雷达图的示例
ggradar:R语言雷达图最好的解决方案