本内容为【科研私家菜】R可视化之美之科研绘图系列课程
快来收藏关注【科研私家菜】
01 雷达图
雷达图(Radar Charts)也称蜘蛛图或极坐标图。
雷达图一般被用来比较多个定量变量中哪些变量具有相似数值,或者每个变量中有没有任何异常值。此外,
雷达图也可用于查看数据集中哪些变量得分较高/低,是显示性能表现的理想之选。
雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常是无信息的。 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或Kiviat图。它相当于平行坐标图,轴径向排列。
雷达图和折线图是是很相似的,只不过坐标轴由直线坐标轴,变成了极坐标轴。
使用ggplot2绘制雷达图,使用geom_polygon() 函数或者 geom_path()函数,同时借助 coord_polar() ,可以实现图带平滑线的圆形雷达图。
library(ggplot2)
library(RColorBrewer)
label_data<-data.frame(car=c("Math" , "English" , "Biology" , "Music" , "R-Coding" ),
id=c(1:5) ,
value=c(12 , 2 ,14 ,20, 18))
AddRow<-c(NA,nrow(label_data)+1,label_data[1,ncol(label_data)])
mydata<-rbind(label_data,AddRow)
myAngle<- 360- 360 * (label_data$id-1) /nrow(label_data)
ggplot() +
geom_polygon(data=mydata,aes(x=id, y=value),color = "black", fill=brewer.pal(7,"Set1")[1],alpha=0.1)+
geom_point(data=mydata,aes(x=id, y=value),size=5,shape=21,color = 'black', fill=brewer.pal(7,"Set1")[1])+
coord_polar() + #
ylim(0,22)+
theme_light()+
theme(axis.text.x=element_text(size = 11,colour="black"))
ggplot() +
geom_polygon(data=mydata,aes(x=id, y=value),color = "black", fill=brewer.pal(7,"Set1")[1],alpha=0.1)+
geom_point(data=mydata,aes(x=id, y=value),size=5,shape=21,color = 'black', fill=brewer.pal(7,"Set1")[1])+
coord_polar() + #
#coord_radar()+ #
scale_x_continuous(breaks =label_data$id,labels=label_data$car)+
ylim(0,22)+
theme_light()+
theme(axis.text.x=element_text(size = 11,colour="black",angle = myAngle))
效果如下:
02 多数据系列雷达图
雷达图(radar chart),又称蜘蛛网图(spider plot),是一种表现多维数据的强弱的图表。它将多个维度的数据量映射到坐标轴上,这些坐标轴起始于同一个圆心点,通常结束于圆周边缘,将同一组的点使用线连接起来就称为了雷达图。
label_data<-data.frame(
car=c("biology" , "english" ,"math" , "music" , "R-coding" ),
id=c(1:5) ,
v1=sample( 0:20,5, replace=T),
v2=sample( 0:20,5, replace=T)
)
AddRow<-c(NA,nrow(label_data)+1,label_data[1,ncol(label_data)-1],label_data[1,ncol(label_data)])
mydata<-rbind(label_data,AddRow)
myAngle<- 360- 360 * (label_data$id-1) /nrow(label_data)
mydata<-melt(mydata,id=c("car", "id"))
ggplot(data=mydata,aes(x=id, y=value,group=variable,fill=variable)) +
geom_polygon(colour="black",alpha=0.1)+
geom_point(size=4,shape=21,color = 'black')+
coord_radar()+
#coord_polar() +
scale_x_continuous(breaks =label_data$id,labels=label_data$car)+
theme_bw() +
ylim(0,22)+
theme(axis.text.x=element_text(size = 11,colour="black",angle = myAngle),
axis.title=element_text(size=15,face="plain",color="black"),
axis.text = element_text(size=12,face="plain",color="black"),
panel.grid.major = element_line(color="grey80"),
axis.line = element_line(color="black"),
axis.ticks = element_line(color="black"))
效果如下:
03 专属雷达图绘图包fmsb
#定义绘制图形的格式
pcol=rgb(0.2,0.5,0.5,0.9) , pfcol=rgb(0.2,0.5,0.5,0.5) , plwd=4 ,
#自定义网格格式
cglcol="black", cglty=4 ,axislabcol="grey", caxislabels=seq(0,20,5), cglwd=0.7,
#自定义标签的字体粗细大小
vlcex=0.8 )
#加载包
library(fmsb)
#创建一个数据集
data <- as.data.frame(matrix( sample( 2:20 , 10 , replace=T) , ncol=10))
colnames(data) <- c("A" , "B" , "C" , "D" , "E", "F" , "G" ,
"H", "I", "J" )
data <- rbind(rep(20,10) , rep(0,10) , data)
#查看数据集
data
#作图
radarchart(data, axistype=1 ,
pcol=rgb(0.2,0.5,0.5,0.9) , pfcol=rgb(0.2,0.5,0.5,0.5) , plwd=4 ,
cglcol="grey", cglty=1, axislabcol="grey", caxislabels=seq(0,20,5),
cglwd=0.8,
vlcex=0.8
)
radarchart(data)
效果如下:
参考资料
《R语言数据可视化之美》
关注R小盐,关注科研私家菜(溦❤工众號: SciPrivate),有问题请联系R小盐。让我们一起来学习 R可视化之美之科研绘图