简介

南丁格尔玫瑰图(Nightingale rose chart)即极坐标柱形图,是一种圆形的柱形图。由弗罗伦斯-南丁格尔所发明,普通柱形图的坐标系是直角坐标系,而南丁格尔玫瑰图的坐标系是极坐标系。南丁格尔玫瑰图是在极坐标下绘制的柱形图,使用圆弧的半径长短表示数据的大小。美国各数据类别或间隔在径向图上划分为相等分段,也就是极坐标系的角度相等,而每个分段延伸多远(与其所代表的数值成正比)取决于极坐标轴线。因此,从极坐标延伸出来的每一环可以当做标尺来使用,用来表示分段的大小并代表数值的高低。

特点
(1)由于半径和面积是平方的关系,南丁格尔玫瑰图将会将数据的比例夸大,所以适合用于比较数值大小接近的数据。
(2)由于圆形有周期特性,所以南丁格尔玫瑰图特别适用于X轴变量是环状周期型序数的情况,比如月份、星期、日期等,或者直接用于展示分类序数的数据。
(3)南丁格尔玫瑰图是将数据以圆形排列展示,而柱形图是将数据横向排列展示。所以在数据量较多时,使用南丁格尔玫瑰图更能够节省绘图空间。
所以南丁格尔玫瑰图的主要缺点在于面积较大的外围部分更加引人注意,这跟数值的增量成反比。

操作
在R语言中,从直角坐标系转换到极坐标系,只需要添加一条坐标系的语句:coord_polar(theta='x’start=0),其中theta表示将X轴或Y轴映射到极坐标系。

实例——南丁格尔玫瑰图

南丁格尔玫瑰图,做出来简单,但是要美化起来,算得上是艺术了。所幸,我们有示范的案例:
链接

先上一下自己做的图:

作图:应用到的所有软件包括:R、Excel、PPT、Ps。这4个是在作图中涉及到的所有的软件,主要的只是R和PPT,其它的都是辅助用。并且这张图不是直接生成的,而是多个元素的集合,而主要的元素是通过不同的方式获得。可以看到图中的几个元素:玫瑰图主体、左上角文字、右上角文字、每个柱子的标签。

第一步:

收集整理数据:

r语言画玫瑰风向图 r语言 玫瑰图_柱状图

4列数据,观测的数量就是当天的数据。前两个可以在各种官方网站获得;第三列是玫瑰图中每个玫瑰瓣的颜色,如果对自己绘图审美有信心,可以自行配色,上图的数据是通过Ps在示例中提取出的每个瓣对应的16进制颜色;第四列是通过Ps测量的每个瓣的长度。

第二步:R语言绘图

数据准备好之后,我们就在R中绘制玫瑰图主体:

library(ggplot2)
my_data <- read.csv('玫瑰图数据.csv',header = T, stringsAsFactors = F)

colour <- as.vector(t(my_data$RGB))

ggplot(my_data,aes(x=国家,y=长度))+
  geom_bar(aes(fill=factor(长度)),width=1,stat = 'identity')+
  scale_fill_manual(values = colour)+
  coord_polar(theta = 'x',start = 0,direction = 1)+
  ylim(-0.5,12)+
  theme(panel.grid=element_blank(),
        panel.background=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank(),
        axis.title=element_blank(),
        legend.position = 'none'
  )

作图的思路就是先做出柱状图,然后换算极坐标系即可。上述代码geom_bar()函数生成柱状图,scale_fill_manual()函数根据我们提取的颜色映射到每根柱子上,coord_polar()函数调整极坐标系,ylim()函数是为了图形中间的空格,theme()函数作用于主题。其中的参数就不谈了,之前的图形语法里有详细介绍。

r语言画玫瑰风向图 r语言 玫瑰图_坐标系转换_02


这是做出来单独玫瑰图元素的样子。

第三步:组合元素

组合元素主要就是将上面说的玫瑰图主体、左上角文字、右上角文字、每个柱子的标签组合起来,这就有很多的软件可以实现了,PPT、Ps、Illustrator 等,最轻巧的就是PPT了,添加文本框,调整位置就行,没什么好方法,就是硬肝,因为图上的文字排列没有规律可言,调整就是了。中奖的两个半透明圆圈就是插入两个性状,然后调整透明度。
将图中的多个元素调整调整位置即可: