1

我浏览了之前的帖子以寻找答案,但是遇到了不适合我的情况的代码或没有提供示例数据的类似问题。无论如何,以下是我的一小部分数据:

示例数据

长话短说,我试图在所有前任政府的平均值($Total)和最近政府的所有案例的平均值($Admin)的散点图之上绘制来自个别案例的平滑二进制字符串。通过从列表中选择一个案例,我可以使用以下代码来完成此操作:

library(ggplot2)
vars <- select.list(names(Ex),multiple=TRUE,graphics=TRUE)
Cases<-subset(Ex,select=vars)
for(i in Cases){
  iplot<-ggplot(Ex,aes(x=Total,y=i))
} 
iplot+geom_smooth(method=loess,size=1,colour="orange",linetype=1,fill="orange",se=T)+
  geom_point(aes(y=Admin),colour="dark green",size=1.5)+ylim(0,1)+xlim(0,1)+
  labs(x="Expected",y="Admin",title=vars)

例如,如果您从列表中选择案例 A,您将获得深绿色的 $Total 和 $Admin 散点图,以及橙色的案例 A 二进制数据的黄土平滑。

如果我知道我想查看的案例,或者像我的示例那样有足够少的案例,那就太好了。但是,在此过程的实际应用中,我可以轻松处理 500 多个案例,因此我想生成一个像上面那样的多面图输出,它将遍历我数据中的所有案例(即同时为案例 AD 生成图表)示例数据),因此我可以轻松识别/选择更感兴趣的案例。

我尝试使用以下代码进行此操作:

for(i in Ex){
  iplot<-ggplot(Ex,aes(x=Total,y=i))
} 
iplot+geom_smooth(method=loess,size=1,colour="orange",linetype=1,fill="orange",se=T)+
  geom_point(aes(y=Admin),colour="dark green",size=1.5)+ylim(0,1)+xlim(0,1)+
  facet_wrap(~vars,ncol=3)+
  labs(x="Expected",y="Admin",title=vars)

...以及许多其他尝试,但我似乎总是回到这个错误消息:

layout_base(data, vars, drop = drop) 中的错误:至少一层必须包含用于分面的所有变量

我错过了什么?

4

1 回答 1

4

如果我理解正确,您希望黄土曲线基于二进制数据(??)。如果是这样,那么这似乎就是你所要求的。

Ex <- read.csv("StackOverflowEx.csv")
library(ggplot2)
library(reshape2)    # for melt(...)
vars <- select.list(names(Ex),multiple=TRUE,graphics=TRUE)
Cases<-subset(Ex,select=vars)

gg <- melt(Cases,id=c("Item","Total","Admin"))
ggplot(gg, aes(x=Total,y=Admin))+
  geom_point(colour="dark green",size=1.5)+
  geom_point(aes(y=value,color=variable))+
  geom_smooth(aes(y=value,fill=variable),
              method=loess,size=1,linetype=1,se=T)+
  facet_wrap(~variable)+
  ylim(0,1)+
  labs(x="Expected",y="Admin",title=vars)

该图是通过选择所有列(Item、Total、Admin 和 AD)生成的。

请注意,错误区域被“裁剪”。这是因为你设置了ylim(0,1).

于 2014-04-08T22:31:46.650 回答