2012-10-29 57 views
1

我想通过使用一个循环绘制一组相对于彼此的变量,并且par(ask=T)仅在每次单击鼠标后更新绘图。使用qplot/ggplot2循环打印

require(ggplot2) 
df1 <- data.frame(id=seq(1,10,1) 
    ,col1 = runif(10) 
    ,col2 = runif(10) 
    ,col3 = runif(10) 
    ,col4 = runif(10) 
    ,col5 = runif(10) 
    ,col6 = runif(10) 
    ,col7 = runif(10) 
    ,col8 = runif(10) 
    ,col9 = runif(10) 
    ,col10 = runif(10) 
    ) 

par(ask=TRUE) 
for(i in 2:9){ 
colName2 <- paste("col",i,sep="") 
plot(df1$col1, df1[,colName2]) 
flush.console() 
} 
par(ask=FALSE) 

但是,如果我运行相同的代码,并使用qplot()代替plot(),绘图窗口从未更新:

下面的代码使用plot()功能工作正常。

任何想法为什么或变通方法?

回答

3

ggplot2仅通过调用qplot(或ggplot)不会显示图表;当打印此函数返回的值时(因为它是在命令行上发出时的默认值),则绘制该图。在一个循环中,函数的返回值默认不会被打印,因此不显示任何内容。明确地打印它,它会显示出来。

这涵盖在R FAQ 7.22

par(ask=TRUE) 
for(i in 2:9){ 
    colName2 <- paste("col",i,sep="") 
    print(qplot(df1$col1, df1[,colName2])) 
    flush.console() 
} 
par(ask=FALSE) 
+0

完美,非常感谢。 – screechOwl