ggplot2 练习杂记二 EXCEL 分组堆积条形图

Excel中图表如下:

 

今天折腾了大半天,在ggplot2中,要不是堆积图要么就是非堆积的,没法像Excel中做到分组堆积(也许有办法,但我目前还不知道该如何实现-_-!)

只能是在R中做了个类似的,但问题很多。。。

R中图形如下:

因为是模拟出来的,还没法对A,B,C,D进行调整间隔,如果不看对应的Y轴标签无法很清淅的从图表上看出谁和谁是一组的

R中代码如下:

channel <- read.xlsx("c:/myR/channel.xlsx",sheetName="Sheet2",encoding="UTF-8")


ggplot(channel, aes(x = as.numeric(interaction(Left,Name)), y = Amount, fill =Type,group=Name)) #把x轴的显示的内容处理下分组序号
 +   geom_bar(stat = "identity") 
 +  scale_x_continuous(breaks=c(1.5,3.5,5.5,7.5),labels=c("A","B","C","D"))#主要靠这里来定制X轴的显示内容,
+theme( panel.grid.major=element_blank(),panel.grid.minor=element_blank())
+coord_flip() #翻转如果不加这句则图像为柱状图 
 


数据如下:

NameType Amount Left
A期初库存                           842L
A采购                      96,907L
A期末库存                        3,250R
A销售                      94,541R
B期初库存                           493L
B采购                      58,210L
B期末库存                           381R
B销售                      58,321R
C期初库存                        1,215L
C采购                      56,999L
C期末库存                        3,373R
C销售                      54,540R
D期初库存                        1,293L
D采购                      56,699L
D期末库存                        6,206R
D销售                      51,785R

 

结果并不如意,或许还有好办法,再研究研究。。。。

---------------------------------------------------------------------------------------------------------------------------------------------

update 2015-07-16

有了另一种解决方案,比上面的效果要好,但只能是柱状的,不知道怎么样才能设成条状的。不过至少图形看起来能达到分组堆积的效果了

 

代码:

ggplot(data = channel2, aes(x = Left, y = Amount, fill = factor(Type) ,order = as.numeric(factor(channel2$Type,levels=c("期初库存","采购","期末库存","销售")))   )) 
+ geom_bar(stat = "identity", width = 1, position = "stack" )
+ facet_grid(. ~ Name,scales = "free_x")
+ theme(axis.text.x =element_blank()) #数据还是最上面的数据,对数据按Name进行分片,然后x轴绑定Left字段,再在最后将X轴上显示的文字取消.
#order = as.numeric(factor(channel2$Type,levels=c("期初库存","采购","期末库存","销售")))   是设置堆积图的顺序

 

------------------------------------------------------------------------------------------------------

update

嗯嗯,这次效果终于更进一步,

代码

ggplot(data = channel2, aes(x =factor(Left,levels=c("R","L")), y = Amount, fill = factor(Type) ,order = as.numeric(factor(channel2$Type,levels=c("期初库存","采购","期末库存","销售")))   ))  
+ geom_bar(stat = "identity", width = 1, position = "stack" )  
+ theme(axis.text.x =element_blank(),axis.text.y =element_blank()) #不显示Y,X轴的标签
+coord_flip() #翻转
+facet_grid(Name~.) #分片(fact_grid(Name~.) 分片按行显示如上图,(facet_grid(.~Name) 分片按列显示,如上上图 ^^)

 

转载于:https://www.cnblogs.com/LearningForR/p/4648777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值