1

我想通过使用循环来绘制一堆变量,并par(ask=T)在每次鼠标点击后更新绘图。

以下代码使用该plot()函数可以正常工作:

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(),则绘图窗口永远不会更新。

任何想法为什么或解决方法?

4

1 回答 1

3

ggplot2图形不仅仅通过调用qplot(or 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)
于 2012-10-29T15:24:51.623 回答