【R语言 南丁格尔玫瑰图绘制】
继续上一篇地理信息可视化讲起,为了能够更加直观的展示数据分布情况,发现之前人民日报客户端曾经做过一张关于疫情分布的玫瑰图,非常惊艳,故尝试用当前爬取的数据进行绘制。
绘图前数据整理
现存数据中不少地区病例已经清零,故在绘图中剔除为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语言 南丁格尔玫瑰图绘制】相关推荐
- R语言-南丁格尔玫瑰图
简介 南丁格尔玫瑰图(Nightingale rose chart)即极坐标柱形图,是一种圆形的柱形图.由弗罗伦斯-南丁格尔所发明,普通柱形图的坐标系是直角坐标系,而南丁格尔玫瑰图的坐标系是极坐标系. ...
- R语言ggplot绘制鸡冠花图(南丁格尔玫瑰图)
南丁格尔玫瑰图也就是鸡冠花图,一种极坐标的柱状图.图形的大小跟变量分组的数值呈正比.从极坐标延伸出来的每一环可以当做标尺来使用,用来表示分段的大小并代表数值的高低. 首先绘制柱状图 bar<- ...
- python+matplotlib绘制南丁格尔玫瑰图
实验:绘制南丁格尔玫瑰图 本实验有一定难度,有人说matplotlib绘图和matlab大同小异,我看除了一些函数名相同之外,其他的像参数和使用方法很不一样.另外我不知道是不是在matlab中画玫 ...
- echarts绘制嵌套环形图(南丁格尔玫瑰图)
根据专业总人数和学院总人数绘制嵌套环形图 首先,echarts的基本步骤 引入js,准备容器,初始化实例, <script src="lib/echarts.min.js"& ...
- 使用Matplotlib绘制南丁格尔玫瑰图
前言 在前文中,我们介绍了使用pyecharts绘制南丁格尔玫瑰图,本章我们再学习一下使用matplotlib绘制南丁格尔玫瑰图,了解在极坐标系中绘制柱状图.并对比一下两种不同的绘制方法,如何实现? ...
- python实验之绘制南丁格尔玫瑰图
一.实验目的 了解玫瑰图的前世今生:了解 matplotlib 标准库中的 pyplot 模块:了解在极坐标 系中绘制柱状图. 二.实验基本原理及步骤(或方案设计及理论计算) 实验步骤: 查阅文档,了 ...
- 【Python绘图】pyecharts绘制南丁格尔玫瑰图
from pyecharts.charts import Pie from pyecharts import options as opts import random# 随机颜色生成 def ran ...
- 【Python数据分析——使用matplotlib制作南丁格尔玫瑰图】
目录 一.介绍 二.相关库 三.数据准备 四.pyecahrts代码实现 五.matplotlib代码实现 一.介绍 玫瑰图是弗罗伦斯·南丁格尔所发明的.又名为极坐标面积图,是一种圆形的直方图. 南丁 ...
- Python数据可视化之南丁格尔玫瑰图(亲测)
文章目录 1. 什么是南丁格尔玫瑰图 2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图. 南丁格尔玫瑰图(Nightingale rose ...
- Python数据可视化之南丁格尔玫瑰图
文章目录 1. 什么是南丁格尔玫瑰图 2. 南丁格尔玫瑰图的绘制 1. 什么是南丁格尔玫瑰图 央视新闻用来展示疫情0增长天数的图就是南丁格尔玫瑰图. 南丁格尔玫瑰图(Nightingale rose ...
最新文章
- 【组队学习】【27期】动手学数据分析
- python爬虫系列(5.3-动态网站的爬取的策略)
- “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作
- 【leetcode】581. Shortest Unsorted Continuous Subarray
- 【DIY】一个名叫“故事鸡”的儿童玩具是如何用树莓派3B+练成的
- c语言读写nfc,Android NFC M1卡读写芯片卡读写(CPU卡读写)(RFID读写)
- Nginx + Tomcat 配置负载均衡集群
- MySQL存储引擎中MyISAM和InnoDB区别
- 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间
- 新手该怎么独立做跨境电商?做之前需要准备什么?
- C++11标准后的C++阅读书目
- RFID技术与应用 复习用
- 想自学单片机和c语言,单片机想入门应该怎么学?请记住以下几点
- 恒凯USB数据采集卡在国产麒麟操作系统下的应用(一)环境设置、采集卡驱动安装及C语言采集应用
- Transformer对接公司需求的调研报告
- php 替换 全角符号,php如何实现全角符号转半角
- 【JS】通过JS实现超市小票打印功能——ActiveX控件
- 微信域名防封,细说微信域名防封技术原理
- MySQL 是如何归档数据的呢?
- 关闭只为更好,耐克NRC退出中国市场,新一代“本地版”即将推出
热门文章
- 外圣内王适用于互联网行业吗?
- qrcode.js的识别解析二维码图片和生成二维码图片
- 计算机cpu的字母,买电脑必看:CPU型号后的字母意思详解
- java-opencv 米粒数_Python opencv学习音符的米粒数,返回每个米粒的位置面积和总米粒数的平均面积,pythonopencv,笔记,之数,并,一个,及,个数...
- 英语时态=时间+状态
- 查看oracle操作历史,查看操作历史记录
- 8家供应商、2300个特效镜头,ftrack助力《侍神令》协同制作
- 车牌识别系统原理及代码【YOLO+MLP】
- 精选数据分析师常见的面试问题2020
- 如何区分前后端 BUG