全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5428 0
2021-02-02
用ggplot2绘制南丁格尔玫瑰图,示例代码如下:
library(ggplot2)
mydata<-data.frame(a=c("apple","byte","cut","d","e","f","g"),b=c(5,6,7,8,4,5,6))
myAngle=seq(0,360,length.out = 7)
ggplot(mydata,aes(x=a,y=b,fill=factor(b)))+
geom_bar(width=1,stat = "identity",colour="white",fill="#F8766D")+
geom_text(aes(y=b-8,label=b),color="white")+
coord_polar(theta = "x",start=0)+
ylim(c(0,10))+
theme_minimal()+
theme(axis.text.x=element_text(size=13,colour="black",angle=myAngle))



示例效果:

1.jpg



ggplot2的基本原理:


ggplot()+geom_


前者是基础函数,用于加载数据和绘制基础图形;后者是图层工具,在基础图形上加载效果,可以加载多个图层效果,每一个+,叠加一个图层效果。




代码详解:


mydata<-data.frame(a=c("apple","byte","cut","d","e","f","g"),b=c(5,6,7,8,4,5,6))
#定义你的数据,类型是2个向量,代表x和y轴2个方向上的取值

myAngle=seq(0,360,length.out = 7)
#定义y轴坐标上的文字旋转角度,自己调整

ggplot(mydata,aes(x=a,y=b,fill=factor(b)))+
#绘图函数,ab两个向量分别带入xy轴,以b向量为表现因子

geom_bar(width=1,stat = "identity",colour="white",fill="#F8766D")+
#定义条形图层样式,width为1个条形所占的宽度;colour为条形间间隔的颜色;fill为条形中填充的颜色,自己调整

geom_text(aes(y=b-8,label=b),color="white")+
#定义y轴标签层样式

coord_polar(theta = "x",start=0)+
#将直角坐标转换成极坐标

ylim(c(0,10))+
#定义极坐标的取值范围

theme_minimal()+
#定义主题风格,除开minimal外,还有:theme_bw, theme_gray,  theme_light,  theme_test,  theme_classic. 可以一一尝试自己体会

theme(axis.text.x=element_text(size=13,colour="black",angle=myAngle))
#定义x轴文字层样式



南丁格尔玫瑰图适合什么情况下用?

玫瑰图由护士南丁格尔创造,通过强烈的对比,给人留下深刻的印象。原始目标是让国家高层对占地医院进行重视,因为良好的战地医院,能将战士死亡率从42%降到2.2%。

该图适用于需要强烈对比的数据,以及在x轴数据过多无法展开而用极坐标卷曲后展示的情况。

由于y轴数值为圆的半径,而圆面积为2倍指数,造成扇面的指数级别放大,夸大了数据的情况,这也是为什么南丁格尔图适合用于对比。但请注意,当对比的数据数值差异较大时,反而不适合使用,自己体会。

该图渲染效果大于实用效果,请慎用,以免汇报时给人华而不实的印象。




实例:

2.jpg



实例进一步美化处理

0.png


在此遇到了玫瑰图的一个问题:数值差距过大时不宜使用



解决思路:给数据开方。由于玫瑰图主要用于展示,而不是精确显示数据,开方后扇形面积降了一级,观感更合适了。








实例数据开方后:



3.png

对比前图,自己体会。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群