循环使用qplot / ggplot2

时间:2012-10-29 14:44:02

标签: r plot ggplot2

我想通过使用循环来绘制一堆变量,并且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(),则绘图窗口永远不会更新。

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

1 个答案:

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