用ggplot2绘制多个案例

时间:2014-04-08 21:29:51

标签: r ggplot2 scatter-plot smoothing facet-wrap

我已经查看了之前的帖子以获得答案,但要么遇到不适合我的情况的代码或者没有提供示例数据的类似问题。无论如何,以下是我的数据的一小部分:

Example Data

长话短说,我试图在所有先前主管部门($ 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&amp;的散点图。 $深绿色的Admin,带有黄土平滑的情况橙色的二进制数据。

如果我知道我想要查看的案例,或者像我的例子那样有足够少的案例,那就太好了。但是,在这个过程的实际应用中,我可以很容易地接近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)出错:至少有一层   必须包含用于分面的所有变量

我错过了什么?

1 个答案:

答案 0 :(得分: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)

通过选择所有列(项目,总计,管理员和A-D)生成此图表。

请注意,错误区域是&#34;剪切&#34;。这是因为您设置了ylim(0,1)