分享

R可视化之美之科研绘图-17.南丁格尔玫瑰图

 yucca啦 2022-07-29 发布于湖北

本内容为【科研私家菜】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语言数据可视化之美》

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多