2012-02-12 89 views
3

我已经尝试了一些东西,但无法获取我的图创建网格。我想要的是一张堆积满的图表,但我不断弄错我无法弄清楚的错误。如果我的数据只有一年(周期),这是有效的。无法正确获取条形图

p2000 <- ggplot(c2000,aes(x=c2000$RealCode, y=c2000$Amount, fill=c2000$Party,  colors=c2000$Party)) + 
    geom_bar(position="fill",colour="black") + cbgFillPalette + xlab("") + ylab("") +  opts(title="2000")+ 
    opts(legend.position = "none")+geom_hline(yintercept = .5, colour = "black")+ 
    facet_grid(. ~ Cycle) 
p2000 

但是,如果我有超过一年,我得到y没有发现错误。

c2000[1:5,] 
    RealCode Cycle Party Amount 
1  A 2000  D 5581676 
2  B 2000  D 2547396 
3  C 2000  D 6867211 
4  D 2000  D 2839314 
5  E 2000  D 6255726 
> p2000 <- ggplot(c2000,aes(x=c2000$RealCode, y=c2000$Amount, fill=c2000$Party,   colors=c2000$Party)) + 
+  geom_bar(position="fill",colour="black") + cbgFillPalette + xlab("") + ylab("") +  opts(title="2000")+ 
+  opts(legend.position = "none")+geom_hline(yintercept = .5, colour = "black")+ 
+  facet_grid(. ~ Cycle) 
> p2000 
Error in pmin(y, 0) : object 'y' not found 
> p2000 <- ggplot(c2000,aes(x=c2000$RealCode, y=c2000$Amount, fill=c2000$Party,  colors=c2000$Party)) + 
+  geom_bar(position="fill",colour="black") + cbgFillPalette + xlab("") + ylab("") +  opts(title="2000")+ 
+  opts(legend.position = "none")+geom_hline(yintercept = .5, colour = "black")+ 
+  facet_grid(. ~ c2000$Cycle) 
> p2000 
Error in layout_base(data, cols, drop = drop) : 
    At least one layer must contain all variables used for facetting 

这是一个情节是这样的:

http://imgur.com/EnzFa

+2

没有一个可重复的例子,我不能提供帮助,但至少你绝对不应该像'x = c2000 $ RealCode'那样映射美学。你应该做'x = RealCode'。 – joran 2012-02-12 05:26:43

+0

改变一切只是列名解决了我的问题。谢谢! – brian 2012-02-12 12:59:02

回答

4

由于我的评论似乎是正确的答案,我将其添加为一个答案。

您不应该使用x = c2000$RealCode映射美学。而是在ggplot调用开始时指定数据框,然后审美映射应该简单地指定该数据框中列的名称。所以你可能想把它们全部转换成x = RealCode这样的东西。

否则ggplot会在构建情节时会对在何处寻找东西感到困惑。