1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 数据可视化_科学统计图表5——ggplot绘制南丁格尔玫瑰图

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

时间:2023-12-05 12:49:31

相关推荐

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

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")

随后会得到以下三个图

然后用修图软件将这三个图层叠加后就得到了最终图像!

铁汁们就冲这个图,我要个小心心不过分吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。