ggplot2设置坐标轴范围_ggplot2—旋风图

4f727d70b87734e89d94e87cc96c71c3.png

好久没有更新了,所有话不多说,直奔我们今天的主题,如何用R语言中ggplot2制作旋风图。其实在上一篇文章就有介绍到旋风图的应用,当时是使用basic plot制作的,有兴趣的可以研究一下。下面就开始介绍ggplot2如何制作旋风图:

(1).认识数据

首先我们需要一个用于可视化的数据,旋风图就是双方向的条形图,因此需要两组数据,下面是本次所使用的数据:

31851bca9e8de009de6df288435bc114.png

数据是由各个省份的销售总业绩以及对应客单均两组数据组成的。

(2).数据处理

要绘制旋风图的效果,我们需要对数据集进行一些处理。由于旋风图有两个方向,因此两组数据需要调整为其中一组数据符合为正号,另外一组则为负号。但是我们要考虑两组数据的量纲,明显总业绩是比客单均要大很多,如果直接绘制图的话,客单均的数据的显示效果就非常不明显了,所以我们可以在调整符合的同时,将客单均这组数据等倍数放大,本次数据我们就设置倍数为130,具体的数据集可以视图形的制作效果而调整。

61e08ccfedd60cb59e7c66fdce8996c7.png

(3).绘制旋风图

#重命名数据集,方便引用书写a-省份,b-业绩,c-客单均,d-调整单均
names(data1) = c('a','b','c','d') 
#加载ggplot2
library(ggplot2)
# 使用coord_flip()反转x、y轴
p = ggplot(data1)+geom_bar(aes(x=a,y=b),stat = 'identity')+geom_bar(aes(x=a,y=d),stat = 'identity')+coord_flip()

82e69d8f1fe68adce0282c98e0aeb5af.png

最终会得到上面的图形。看上去已经有旋风图的味道了,但是看上去十分的丑,我们需要进一步调整,这才是体现ggplot2的可视化效果。

(4).调整图形

# 调整条形的颜色,宽度,透明度,使用主题theme_minimal()
p = ggplot(data1)+geom_bar(aes(x=a,y=b),width = 0.6,stat = 'identity',alpha=sort(c(0.38,0.48,0.58,0.68,0.78,0.88),decreasing =T),fill = rgb(239,166,102,maxColorValue =255))
     +theme_minimal()+coord_flip()+xlab("")+ylab("")
     +geom_bar(aes(x=a,y=d),width = 0.6,stat = 'identity',alpha=sort(c(0.38,0.48,0.58,0.68,0.78,0.88),decreasing =T),fill = rgb(99,178,238,maxColorValue =255))

1333063e1142c747df12809a73557119.png

颜色我们使用了蓝色和橙色,透明度设置了梯级度,条形的宽度也使用更合适的参数。但是我们可以看到轴上面的还有科学计数的标度,而且对于调整客单均,坐标轴也显得没有意义了,因此我们可以因此横轴,并且加上数据标签,这样的话就可以更加凸显数据的内容了。

p1 =p+scale_y_continuous(breaks =seq(-120000,650000,150000),labels=NULL)
    +geom_text(aes(x=a,y=b+30000,label=b),family='Te',size=4)
    +geom_text(aes(x=a,y=d-15000,label=c),family='Te',size=4)

f60868b0524922744131117e55932717.png

最后我们可以对两组数据进行说明和添加分界线,使图形的内容更易被人读懂,并且也可以按照业绩升序排列,调整各个省份的位置,下面就提供完整的代码和最终的效果图,有兴趣的可以按照自己的风格继续调整参数。

p = ggplot(data1)+geom_bar(aes(x=a,y=b),width = 0.6,stat = 'identity',alpha=sort(c(0.38,0.48,0.58,0.68,0.78,0.88),decreasing =T),fill = rgb(239,166,102,maxColorValue =255))+
  theme_minimal()+coord_flip()+xlab("")+ylab("")+geom_text(aes(x=a,y=b+30000,label=b),family='Te',size=4)+
  scale_y_continuous(breaks =seq(-120000,650000,150000),labels=rep(" ",6))+geom_bar(aes(x=a,y=d),width = 0.6,stat = 'identity',alpha=sort(c(0.38,0.48,0.58,0.68,0.78,0.88),decreasing =T),fill = rgb(99,178,238,maxColorValue =255))+
  scale_x_discrete(limits=c("江苏","上海","重庆","广东","湖南","北京"))+geom_text(aes(x=a,y=d-15000,label=c),family='Te',size=4)+geom_text(x=6.5,y=-55000,label="客单均",size=4,fontface="bold")+
  geom_text(x=6.5,y=200000,label='总产出',size=4,fontface="bold")+geom_segment(x=0.7,xend=6.3,y=0,yend=0,size=2)

dfa48a3107d74ff841885d91949f9757.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值