“ 本内容为【科研私家菜】R可视化之美之科研绘图系列课程 快来收藏关注【科研私家菜】 ” 『科研私家菜 』 为 大家准备了关于『R语言可视化』的资料,请到文末获取领取方式
01 单一数据南丁格尔玫瑰图 南丁格尔玫瑰图是弗罗伦斯·南丁格尔所发明的。又名为极区图。是一种圆形的直方图。南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),并且用以表达军医院季节性的死亡率。南丁格尔玫瑰图将柱图转化为更美观的饼图形式,是极坐标化的柱图,其夸大了数据之间差异的视觉效果,适合展示数据原本差异小的数据。南丁格尔玫瑰图长得像饼图又不是饼图,这种有着极坐标的统计图有着一个美丽的名字—南丁格尔玫瑰图。南丁格尔玫瑰图(Nightingale rose diagram)又名鸡冠花图(Coxcomb Chart)或极坐标区域图(Polar area diagram)。南丁格尔玫瑰图是将柱图转化为更美观饼图形式,是极坐标化的柱图。不同于饼图用角度表现数值或占比,南丁格尔玫瑰图使用扇形的半径表示数据的大小,各扇形的角度则保持一致。
library(ggplot2) mydata <- data.frame( a=c('Monday' ,'Tuesday' ,'Wednesday' ,'Thursday' ,'Friday' ,'Saturday' ,'Sunday' ), b=c(50, 60, 70, 20,90,110,30)) myAngle <-seq(-20,-340,length.out =7) ggplot(mydata) + geom_bar(aes(x=a, y=b),width = 1,stat ='identity' , colour = 'black' ,fill='#F8766D' ) + geom_text(aes(x=a,y = b-8,label = b),color='white' ) + coord_polar(theta = 'x' ,start=0) + ylim(c(0,120))+ theme_light()+ theme( panel.background = element_blank(), panel.grid.major = element_line(colour = 'grey80' ,size=.25), axis.text.y = element_text(size = 12,colour='black' ), axis.line.y = element_line(size=0.25), axis.text.x=element_text(size = 13,colour='black' ,angle = myAngle))
效果如下: 02 多数据南丁格尔玫瑰图 diamonds<-cbind(diamonds,Cou=rep(1,nrow(diamonds))) sum_clarity<-aggregate(Cou~clarity,diamonds,sum) sort_clarity<-arrange(sum_clarity,desc(Cou)) diamonds$clarity <- factor(diamonds$clarity , levels = sort_clarity$clarity ) myAngle <-seq(-20,-340,length.out = 8) ggplot(diamonds,aes(x=clarity,fill=color))+ geom_bar(width=1.0,colour='black' ,size=0.25)+ coord_polar(theta = 'x' ,start=0)+ scale_fill_brewer(palette='GnBu' )+ guides(fill=guide_legend(reverse=TRUE,title=NULL))+ ylim(c(0,12000))+ theme_light()+ theme( panel.background = element_blank(), panel.grid.major = element_line(colour = 'grey80' ,size=.25), axis.text.y = element_text(size = 12,colour='black' ), axis.line.y = element_line(size=0.25), axis.text.x=element_text(size = 13,colour='black' ,angle = myAngle))
效果如下: ggplot(diamonds,aes(x=clarity,fill=color))+ geom_bar(width=1.0,colour='black' ,size=0.25)+ coord_polar(theta = 'x' ,start=0)+ scale_fill_brewer(palette='Reds' )+ guides(fill=guide_legend(reverse=TRUE,title='Color' ))+ ylim(c(-2000,12000))+ theme_light()+ theme( panel.background = element_blank(), panel.grid.major = element_line(colour = 'grey80' ,size=.25), axis.text.y = element_text(size = 12,colour='black' ), axis.line.y = element_line(size=0.25), axis.text.x=element_text(size = 13,colour='black' ,angle = myAngle))
效果如下: ##参考资料
《R语言数据可视化之美》