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))
示例效果:
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倍指数,造成扇面的指数级别放大,夸大了数据的情况,这也是为什么南丁格尔图适合用于对比。但请注意,当对比的数据数值差异较大时,反而不适合使用,自己体会。
该图渲染效果大于实用效果,请慎用,以免汇报时给人华而不实的印象。
实例:
实例进一步美化处理:
在此遇到了玫瑰图的一个问题:数值差距过大时不宜使用。
解决思路:给数据开方。由于玫瑰图主要用于展示,而不是精确显示数据,开方后扇形面积降了一级,观感更合适了。
实例数据开方后:
对比前图,自己体会。