2013-04-10 157 views
1

累积带状我想创建一个条形图显示与累积值,阴影丝带:绘制在ggplot [R

require(ggplot2) 
plot_data = data.frame(period=factor(c("t_1", "t_5_to_t_2", "t_8_to_t_2", "t_11_to_t_2", "t_14_to_t_2"), levels=c("t_1", "t_5_to_t_2", "t_8_to_t_2", "t_11_to_t_2", "t_14_to_t_2")), vals = 1:5, ribbon_vals = cumsum(1:5)) 
ggplot(data=plot_data, aes(x=period, y=vals)) + 
geom_bar(stat="identity", colour=c("#6495ED", "#2E8B57", "#2E8B57", "#2E8B57", "#2E8B57")) + 
scale_x_discrete(labels = c('t_1' = expression(t-1), 't_5_to_t_2' = expression(t-5 %->% t-2), 't_8_to_t_2' = expression(t-8 %->% t-2), 't_11_to_t_2' = expression(t-11 %->% t-2), 't_14_to_t_2' = expression(t-14 %->% t-2))) + 
geom_ribbon(aes(x=1:5, y=ribbon_vals)) 

这似乎并没有工作。什么是使用geom_ribbon的正确方法?

回答

4

对于geom_ribbon()您应该提供yminymax的值。在这种情况下,ymin是0,而ymaxribbon_valsgeom_ribbon()行应放置在geom_bar()之前。在geom_bar()中使用fill=而不是color=来更改整个栏的颜色(而不仅仅是边框)。

ggplot(data=plot_data, aes(x=period, y=vals)) + 
    scale_x_discrete(labels = c('t_1' = expression(t-1), 't_5_to_t_2' = expression(t-5 %->% t-2), 't_8_to_t_2' = expression(t-8 %->% t-2), 't_11_to_t_2' = expression(t-11 %->% t-2), 't_14_to_t_2' = expression(t-14 %->% t-2))) + 
    geom_ribbon(aes(x=1:5, ymin=0,ymax=ribbon_vals))+ 
    geom_bar(stat="identity",fill=c("#6495ED", "#2E8B57", "#2E8B57", "#2E8B57", "#2E8B57")) 

enter image description here

+0

优秀!会给这个镜头。谢谢。 – Alex 2013-04-10 06:34:57

+0

它如何知道形状应该是什么以及如何连接色带?这很有趣! – Alex 2013-04-10 07:03:29