美文网首页
R语言笔记——使用ggplot2绘制风玫瑰图(南丁格尔玫瑰图)

R语言笔记——使用ggplot2绘制风玫瑰图(南丁格尔玫瑰图)

作者: Snown123 | 来源:发表于2020-03-15 11:24 被阅读0次

    昨天在微博中刷到了下面的图片,当时觉得就很惊艳,很好奇怎么制作的。

    新冠肺炎全球疫情形势

    而后面又看到1篇微信公共号推文,才知道这种图形叫“风玫瑰图”,并介绍了如何使用ggplot2绘制新冠疫情的风玫瑰图。下面,参考上面提到的推文中的代码,我用自己的思路绘制了一幅新冠疫情的风玫瑰图。

    #1. 数据提取。这里使用了nCov2019包中的新冠疫情数据。

    library(nCov2019)

    data <- load_nCov2019()

    mydata <- data['global']

    #2. 数据整理

    library(dplyr)

    data_rose <- mydata %>% filter(time == time(data)) %>%             arrange(desc(cum_confirm)) %>% slice(1:30)  #提取数据,提取前30位国家

    data_rose$country <- factor(data_rose$country, levels = data_rose$country) #按照感染人数排序国家

    data_rose$angle = 1:30 * 360/30 #计算角度,后面会用到

    #3. 绘图

    library(ggplot2)

    ggplot(data_rose, aes(country, cum_confirm, fill = cum_confirm)) +

      geom_col(width = 1, color = 'white') +   #绘制图形基本结构

      geom_col(aes(y = I(6)), width = 1, alpha = 0.1, fill = 'white') +

      geom_col(aes(y = I(4)), width = 1, alpha = 0.3, fill = 'white') +

      geom_col(aes(y = I(2)), width = 1, color = 'white', fill = 'white') +  #绘制空心白和晕轮

      scale_y_log10() + #纵坐标取对数以压缩纵坐标

      scale_fill_gradientn(colors = c("darkgreen", "green", "orange", "firebrick","red"), trans = 'log') + #颜色填充,注意颜色按对数映射

      geom_text(aes(label = paste(paste(country, cum_confirm, sep = '\n'), '例', sep = '\n'),

                    y = cum_confirm * 0.8, angle = angle),

                   data = subset(data_rose, cum_confirm > 700),

                   color = "white", fontface="bold", vjust=1, size = 2) + #添加文字

      geom_text(aes(label = paste0(cum_confirm, '例',country),

                    y = cum_confirm * 4, angle = angle+90),

                data = subset(data_rose, cum_confirm < 700),

                fontface="bold", vjust = 0, size = 2) + #添加文字

      coord_polar(direction=-1) + #极坐标转换,逆时针排序

      theme_void() +

      theme(legend.position="none")

    最终出图如下:

    最后附上我的代码:

    链接:https://pan.baidu.com/s/1EuGth8NbDJKy2w1OB1mUBA

    提取码:x1wo

    相关文章

      网友评论

          本文标题:R语言笔记——使用ggplot2绘制风玫瑰图(南丁格尔玫瑰图)

          本文链接:https://www.haomeiwen.com/subject/skuqehtx.html