19世纪50年代,英国、法国、土耳其和俄国进行了克里米亚战争,英国的战地战士死亡率高达42%。弗罗伦斯·南丁格尔主动申请,自愿担任战地护士。她率领38名护士抵达前线,在战地医院服务。当时的野战医院卫生条件极差,各种资源极度匮乏,她竭尽全力排除各种困难,为伤员解决必须的生活用品和食品,对他们进行认真的护理。仅仅半年左右的时间伤病员的死亡率就下降到2.2%。每个夜晚,她都手执风灯巡视,伤病员们亲切地称她为“提灯女神”。

战争结束后,南丁格尔回到英国,被人们推崇为民族英雄。

出于对资料统计的结果会不受人重视的忧虑,她发展出一种色彩缤纷的图表形式,让数据能够更加让人印象深刻。这种图表形式有时也被称作「南丁格尔的玫瑰」,是一种圆形的直方图。南丁格尔自己常昵称这类图为鸡冠花图(coxcomb),并且用以表达军医院季节性的死亡率,对象是那些不太能理解传统统计报表的公务人员。她的方法打动了当时的高层,包括军方人士和维多利亚女王本人,于是医事改良的提案才得到支持。


相对于普通的柱状图,南丁格尔玫瑰图显得更加浪漫和丰满。经过时代变迁,南丁格尔玫瑰图也得到了极大的发展,各路神仙用他们的脑洞画出了各种各样的玫瑰图,美轮美奂。


那么今天便绘制南丁格尔玫瑰图,以下是绘制成果。

首先说一下绘制思想:

我们先看下图,这个图十分的复杂,复杂就复杂在图中的点。试想一下,如果我们先绘制一个柱状图,那么x轴便是离散的,我们就没法绘制需要连续坐标的点。但如果我们将坐标轴设置为连续的,那么堆叠柱状图就只能通过geom_tect去画,这需要知道每一个四边形的两角的坐标,其难度之大光是想想就头皮发麻。

所以这次绘图用了图层的思想,利用离散坐标轴绘制堆叠柱状图,再重开一张画布,用连续组标轴画点和线。最后利用AI将两个图层结合形成图片!

library('ggplot2')
library('reshape2')A = c("A","B","C","D","E","F","G","H","I","J","K")
VALUE6 =c(88,41,30,40,51,12,70,21,11,13,54)
VALUE5 = c(12,59,70,60,49,88,30,28,29,34,46)
VALUE4 = c(0,0,0,0,0,0,0,22,23,30,0)
VALUE3 = c(0,0,0,0,0,0,0,29,18,12,0)
VALUE2 = c(0,0,0,0,0,0,0,0,12,7,0)
VALUE1 = c(0,0,0,0,0,0,0,0,7,4,0)dat = data.frame(A,VALUE1,VALUE2,VALUE3,VALUE4,VALUE5,VALUE6)dat = melt(dat,variable.name="Sample",value.name = "Num")ggplot(dat,aes(x=as.factor(A),y=Num,fill=Sample))+geom_bar(stat = "identity",width = 1)+scale_y_continuous(limits = c(-30,150),expand = c(0,0))+scale_x_discrete(expand = c(0,0))+theme_void()+theme(legend.position = "none")+coord_polar(theta = "x")seq(from=10,to=11,length.out=4)len = 11
(cumsum(as.numeric(dat[len,7:2]) ) +c(0,cumsum(as.numeric(dat[len,7:2]) )[1:5]) )/2x = c(0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.2,7.4,7.6,7.8,8.14,8.3,8.42,8.57,8.71,8.85,9.14,9.28,9.42,9.57,9.71,9.85,10.33,10.66)y = c(70.4,32.8,24.0,32.0,40.8,9.6,56,10.5,35,63,87,5.5,25.5,49,69.5,87,96.5,6.5,30,53,74,92,98,27,77)dat = data.frame(x=x,y=y,yend=rep(149,25),xend=x)
ggplot(dat,aes(x=x,y=y,yend=yend,xend=xend))+geom_point(size=1)+theme_void()+scale_y_continuous(limits = c(-30,150),expand = c(0,0))+scale_x_continuous(limits = c(0,11),expand = c(0,0))+theme(legend.position = "none")+geom_segment(size=0.1)+coord_polar(theta = "x")dat = data.frame(x = c(0:11),xend = c(0:11),y = rep(0,12),yend = rep(100,12))
ggplot(dat,aes(x=x,y=y,yend=yend,xend=xend))+theme_void()+scale_y_continuous(limits = c(-30,150),expand = c(0,0))+scale_x_continuous(limits = c(0,11),expand = c(0,0))+geom_hline(yintercept = 101.8,size=2,color = "black")+geom_hline(yintercept = 104.5,size=2,color =  "grey")+theme(legend.position = "none")+geom_segment(size=0.3,color = "#000000" )+geom_hline(yintercept = 0,size=2,color =  "black")+coord_polar(theta = "x")

随后会得到以下三个图


然后用修图软件将这三个图层叠加后就得到了最终图像!
铁汁们就冲这个图,我要个小心心不过分吧!

数据可视化_科学统计图表5——ggplot绘制南丁格尔玫瑰图相关推荐

  1. 利用Python实现新冠疫情数据可视化(获取疫情历史数据,制作南丁格尔玫瑰图、疫情地图、动态疫情组合图、词云)

    文章目录 前言 1.获取疫情历史数据 2.制作南丁格尔玫瑰图 2.1 全球各国确诊人数玫瑰图 2.2 全国各省市零新增天数玫瑰图 3.制作疫情地图 3.1全国各省市目前确诊总人数疫情地图 3.2全球各 ...

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

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

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

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

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

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

  5. python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画

    前一阵子,我看到央视新闻中,有一张比较好看数据图,如下: 后来才知道这叫"南丁格尔玫瑰图",是南丁格尔护士在克里米亚战争期间提交的一份关于士兵死伤报告时发明的一种图表. 我心想能不 ...

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

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

  7. 数据可视化_科学统计图表8——ggplot颜色代码详解

    这章不讲画图的代码,只对颜色选取进行介绍. Ggplot有自己的颜色代码,其形式为#nnnnnn.其中n->0 : F(十六进制) 前两个n对应RGB中的R,中间的对应G,最后两个n对应B. 两 ...

  8. 使用excel中的雷达图绘制南丁格尔玫瑰图

    效果展示: 注: 数据文件链接: https://pan.baidu.com/s/1iF_nQ6hhL0MlO8P4qPDuAA 密码: 1snj 数据展示: 绘制思路: 1.计算出确诊人数的平方根( ...

  9. staruml顺序图生成协作图_一个工具箱 之 南丁格尔玫瑰图生成器

    南丁格尔玫瑰图是一种圆形的直方图,由弗罗伦斯·南丁格尔所发明,又名为极区图.出于对资料统计的结果会不受人重视的忧虑,她发展出一种色彩缤纷的图表形式,让数据能够更加让人印象深刻. 南丁格尔玫瑰图将柱图转 ...

  10. 性感的数据可视化 —— 桑基图、气泡图、南丁格尔玫瑰图

    阿里云数据中台官网 https://dp.alibaba.com/index (作者:常成) 2019年的"凯度信息之美奖"揭晓了,有很多很有意思的信息可视化作品.很多作品看到的时 ...

最新文章

  1. Android 使用 ADB 命令录制屏幕上的视频
  2. 无刷电机真威武,一通操作猛如虎
  3. HTML5游戏开发(四):飞机大战之显示场景和元素
  4. Android开发--图形图像与动画(二)--Animation实现图像的 渐变、缩放、位移、旋转
  5. 斐波那契数列——递归算法
  6. 青瓷游戏上市首日破发,“元宇宙光环”能否拯救年内首支游戏股?
  7. maven(android-maven-plugin3.8.0)打包apk无法启动,apklib依赖包的资源索引出错(R文件与主模块冲突)问题解析
  8. linux系统下网络连接不上的问题
  9. python sqlite3 executemany_python – SQLite executemany的问题
  10. linux学习第一课:liunx概论
  11. 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】
  12. 反射注解知识点复习(第一次)
  13. 【Python】基于VB、Python、PythonGUI的BMI计算器小程序
  14. 打印机服务器启用后自动关闭,Win7打印机服务自动关闭了怎么打开|Win7打开打印机服务的简单方法...
  15. 微软MDT 安装与配置(一)
  16. 【上岸合肥工业大学】计算机考研经验分享(初试+复试)
  17. (26)盘古自研框架BackPropagation
  18. 数字硅麦数据的处理(傅里叶FFT)
  19. Uipath IIF判断使用
  20. 【comsol学习1】-电化学模块学习与运行错误之橙子电池

热门文章

  1. 利用组策略部署软件——将软件发布给用户
  2. Android动画学习之帧动画二
  3. KMPlayer使用方法
  4. 缴费报修小程序开发制作功能介绍
  5. 网站打开速度的查询 测试
  6. 永洪科技发布Yonghong Z-Suite V7.5 重新定义大数据驱动业务增长成功标准
  7. mysql调整specified key_MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法...
  8. qml+QQuickPaintedItem数学公式编辑器的实现
  9. android camera拍照录像切换功能
  10. Nginx配置Basic_Auth登录认证