继续上一篇地理信息可视化讲起,为了能够更加直观的展示数据分布情况,发现之前人民日报客户端曾经做过一张关于疫情分布的玫瑰图,非常惊艳,故尝试用当前爬取的数据进行绘制。

绘图前数据整理

现存数据中不少地区病例已经清零,故在绘图中剔除为0的地区,由于弯弯的数据太过于扎眼,和大陆地区差异巨大,直接用原始数据绘图可视化较差,故对原始数据进行了相应调整。

library(ggplot2)
library(RColorBrewer)
library(dplyr)
###绘图数据处理###
mydata[,c(1,3)]%>%arrange(confirm)->mgdata
mgdata<-filter(mgdata,confirm!=0)##剔除现存本土确诊病例为0的省份##
c(mgdata$confirm[1:20]*10,mgdata$confirm[21:22])->mgdata$num##因数据范围差距较大,对其进行转换##
seq(1,length(mgdata$id_area))->mgdata$id
mm<-data.frame()
for(i in 1:length(mgdata$id_area)){if(mgdata$id[i]<=10){mm[i,1]<-paste0(mgdata$confirm[i],"例 ",mgdata$id_area[i])}else if(mgdata$id[i]>10&mgdata$id[i]<=18){mm[i,1]<-paste0(mgdata$confirm[i],"例\n",mgdata$id_area[i])}else{mm[i,1]<-paste0(mgdata$id_area[i],"\n",mgdata$confirm[i],"例")}
}##生成图标文本标签##
mm$V1->mgdata$label

在对图形添加文本标签时发现角度较难掌握,一个一个添加较为繁琐,故编写了角度生成函数ggangel,可以根据柱状图数量生成文本标签角度(有需要的小伙伴可以拿去用哦~)。

ggangel<-function(x){kk<-as.numeric()
for(i in 1:x){j<-360/(2*x)kk[i]<-j+(i-1)*j*2
}
return(kk)
}

绘制玫瑰图

###绘制南丁格尔玫瑰图###
colourful<-colorRampPalette(brewer.pal(5,"Spectral"))(22)##提取想要填充的颜色##
colourful = c("#54778f", "#4EB043", "#E69D2A", "#DD4714", "#A61650")##推荐色号##
ggplot(mgdata,aes(x=id,y=num,label=label))+geom_col(aes(fill=id),width = 1.1,size=0,show.legend = F)+scale_y_log10()+geom_col(aes(y=log10(8)),fill="white",width = 1.1,alpha=0.2,size=0)+geom_col(aes(y=log10(2)),fill="white",width = 1.1,alpha=0.2,size=0)+coord_polar()+theme_void()+scale_fill_gradientn(colors = colourful)->p
p+geom_text(data=filter(mgdata,id<=10),size=2,nudge_y = 0.8,fontface="bold",angle=90-ggangel(22)[1:10])+geom_text(data=filter(mgdata,id<=23&id>18),size=2,nudge_y = -0.5,fontface="bold",angle=360-ggangel(22)[19:22],color="white")+geom_text(data=filter(mgdata,id>10&id<=18),size=2,nudge_y=-0.5,fontface="bold",color="white")##依据标签位置类别逐类添加文本标签##
ggsave("f://data//Books//rosemap.jpg")##存图##

结果如下

【R语言 南丁格尔玫瑰图绘制】相关推荐

  1. R语言-南丁格尔玫瑰图

    简介 南丁格尔玫瑰图(Nightingale rose chart)即极坐标柱形图,是一种圆形的柱形图.由弗罗伦斯-南丁格尔所发明,普通柱形图的坐标系是直角坐标系,而南丁格尔玫瑰图的坐标系是极坐标系. ...

  2. R语言ggplot绘制鸡冠花图(南丁格尔玫瑰图)

    南丁格尔玫瑰图也就是鸡冠花图,一种极坐标的​柱状图.图形的大小跟变量分组的数值呈正比.从极坐标延伸出来的每一环可以当做标尺来使用,用来表示分段的大小并代表数值的高低. 首先绘制柱状图 bar<- ...

  3. python+matplotlib绘制南丁格尔玫瑰图

    实验:绘制南丁格尔玫瑰图   本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫 ...

  4. echarts绘制嵌套环形图(南丁格尔玫瑰图)

    根据专业总人数和学院总人数绘制嵌套环形图 首先,echarts的基本步骤 引入js,准备容器,初始化实例, <script src="lib/echarts.min.js"& ...

  5. 使用Matplotlib绘制南丁格尔玫瑰图

    前言 在前文中,我们介绍了使用pyecharts绘制南丁格尔玫瑰图,本章我们再学习一下使用matplotlib绘制南丁格尔玫瑰图,了解在极坐标系中绘制柱状图.并对比一下两种不同的绘制方法,如何实现? ...

  6. python实验之绘制南丁格尔玫瑰图

    一.实验目的 了解玫瑰图的前世今生:了解 matplotlib 标准库中的 pyplot 模块:了解在极坐标 系中绘制柱状图. 二.实验基本原理及步骤(或方案设计及理论计算) 实验步骤: 查阅文档,了 ...

  7. 【Python绘图】pyecharts绘制南丁格尔玫瑰图

    from pyecharts.charts import Pie from pyecharts import options as opts import random# 随机颜色生成 def ran ...

  8. 【Python数据分析——使用matplotlib制作南丁格尔玫瑰图】

    目录 一.介绍 二.相关库 三.数据准备 四.pyecahrts代码实现 五.matplotlib代码实现 一.介绍 玫瑰图是弗罗伦斯·南丁格尔所发明的.又名为极坐标面积图,是一种圆形的直方图. 南丁 ...

  9. Python数据可视化之南丁格尔玫瑰图(亲测)

    文章目录 1. 什么是南丁格尔玫瑰图 2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图. 南丁格尔玫瑰图(Nightingale rose ...

  10. Python数据可视化之南丁格尔玫瑰图

    文章目录 1. 什么是南丁格尔玫瑰图 2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图. 南丁格尔玫瑰图(Nightingale rose ...

最新文章

  1. 【组队学习】【27期】动手学数据分析
  2. python爬虫系列(5.3-动态网站的爬取的策略)
  3. “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作
  4. 【leetcode】581. Shortest Unsorted Continuous Subarray
  5. 【DIY】一个名叫“故事鸡”的儿童玩具是如何用树莓派3B+练成的
  6. c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)
  7. Nginx + Tomcat 配置负载均衡集群
  8. MySQL存储引擎中MyISAM和InnoDB区别
  9. 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间
  10. 新手该怎么独立做跨境电商?做之前需要准备什么?
  11. C++11标准后的C++阅读书目
  12. RFID技术与应用 复习用
  13. 想自学单片机和c语言,单片机想入门应该怎么学?请记住以下几点
  14. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(一)环境设置、采集卡驱动安装及C语言采集应用
  15. Transformer对接公司需求的调研报告
  16. php 替换 全角符号,php如何实现全角符号转半角
  17. 【JS】通过JS实现超市小票打印功能——ActiveX控件
  18. 微信域名防封,细说微信域名防封技术原理
  19. MySQL 是如何归档数据的呢?
  20. 关闭只为更好,耐克NRC退出中国市场,新一代“本地版”即将推出

热门文章

  1. 外圣内王适用于互联网行业吗?
  2. qrcode.js的识别解析二维码图片和生成二维码图片
  3. 计算机cpu的字母,买电脑必看:CPU型号后的字母意思详解
  4. java-opencv 米粒数_Python opencv学习音符的米粒数,返回每个米粒的位置面积和总米粒数的平均面积,pythonopencv,笔记,之数,并,一个,及,个数...
  5. 英语时态=时间+状态
  6. 查看oracle操作历史,查看操作历史记录
  7. 8家供应商、2300个特效镜头,ftrack助力《侍神令》协同制作
  8. 车牌识别系统原理及代码【YOLO+MLP】
  9. 精选数据分析师常见的面试问题2020
  10. 如何区分前后端 BUG