2012-10-29 98 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