ggplot2 - 当ymin!= 0时,堆栈没有很好地定义

时间:2013-08-08 23:32:21

标签: r ggplot2

在绘制以下数据集时,我得到一些奇怪的结果,希望有人可以指出这个问题。我正在尝试使用我的数据进行小平面包装,但似乎结果并非真正的结果。

这是我的数据集type.mean.prod.rev

Group.1,            Group.2,           x
Prod1,         Expired,  0.339658789
Prod2,         Expired,  0.450215264
Prod3,         Expired,  0.597100606
Prod4,         Expired,  0.450625850
Prod1,   Expiring In 2013,  0.277917631
Prod2,   Expiring In 2013,  0.122023392
Prod3,   Expiring In 2013,  0.011988620
Prod4,   Expiring In 2013,  0.145343114
Prod1,   Expiring In 2014,  0.386366264
Prod2,   Expiring In 2014,  0.402404085
Prod3,   Expiring In 2014,  0.257194254
Prod4,   Expiring In 2014,  0.396879507
Prod1, Expiring Post 2015, -0.003942683
Prod2, Expiring Post 2015,  0.025357259
Prod3, Expiring Post 2015,  0.133716520
Prod4, Expiring Post 2015,  0.007151529

这是我的策划尝试

type.mean.prod.rev.bar <- ggplot(type.mean.prod.rev, 
                             aes(x = type.mean.prod.rev$Group.2,
                                 y = type.mean.prod.rev$x)) + 
  geom_bar(bindwidth = 2,
       stat = "identity") + 
  coord_flip() +
  facet_wrap( ~ Group.1, ncol = 4) +
  theme(axis.title.y = element_blank(),
    axis.title.x = element_blank(),
    panel.border = element_rect(color = "black", fill=NA),
    strip.text = element_text(vjust=.7, 
                               colour="white", 
                               face="bold", 
                               size = rel(1.2)),
    strip.background = element_rect(fill = rgb(red=25,
                                               green = 187,
                                               blue = 222, 
                                               maxColorValue = 255),
                                    colour = "black",
                                    size = 1)) + ylab(NULL) + xlab(NULL)


type.mean.prod.rev.bar                               

我的输出问题是,Group.2的每个级别都没有在每个面板中显示,而是每个级别都在一个面板中,几乎就像刻面是纯粹的美学一样并且数据集仍被视为整体(Group.1 x)。我知道x中有一个负数,这可能会造成麻烦......但即使我用type.mean.prod.rev[13, 3] <- 0将此值重置为零,我也会得到相同的结果。有人知道输出关闭的原因吗?

2 个答案:

答案 0 :(得分:5)

当您在aes内时,只使用列名而不是$语法:ggplot(type.mean.prod.rev, aes(x=Group.2, y=x)) + ...

答案 1 :(得分:3)

出现问题是因为您将美学设为type.mean.prod.rev$Group.2而不是Group2

这令人困惑ggplot

其他要点

  • binwidth只有在使用stat = 'bin'时设置bars使用width的宽度
  • 才有意义
  • Stacking not well defined when ymin != 0negativex值的结果,对于条形图(从0开始)来说,这个值并没有很好地定义 - 浮动条geom_bar
  • 不涵盖图表

因为我很懒,所以我重命名了您的数据集DT

# a minimal example (no theme alterations)
ggplot(DT, aes(x = Group.2, y = x)) + 
    geom_bar(width = .2,
             stat = "identity") + 
    coord_flip() +
    facet_wrap( ~ Group.1, ncol = 4)