2011-11-14 54 views
1

我用下面的代碼使用可視化一些filled.contour數據():顏色在filled.contour再循環()

filled.contour(x, y, z, col = rainbow(256),nlevels=(256), 
    plot.title = title(main = "z", 
    xlab = "x", ylab = "y"), 
    key.title = title(main="T"), 
) 

產生以下情節: enter image description here

然而,當我嘗試登錄數據,調色板被回收,這使得這類形象有點毫無意義的點...:

filled.contour(x, y, log(z), col = rainbow(256),nlevels=(256), 
    plot.title = title(main = "z", 
    xlab = "x", ylab = "y"), 
    key.title = title(main="T"), 
)  

enter image description here

我也試過z <- log(z),然後調用filled.contour(x,y,z,...),但是這產生了相同的結果。我試圖更改傳遞到col=rainbow()nlevels()的值,但這也沒有任何區別。

回答

0

我可以重現類似怪異的情節,如果我在我的矩陣(在我的日誌(z)的矩陣,因此NA/NaN值)負值:

n <- 25; x <- y <- seq(n); z <- outer(x,y,function(x,y) (x-15)^2*(y-10)^3) 
filled.contour(x,y,z,col=rainbow(256),nlevels=256) 
filled.contour(x,y,log(z),col=rainbow(256),nlevels=256) ## warning: NaNs produced 
filled.contour(x,y,log(pmax(z,0.001)),col=rainbow(256),nlevels=256) 

我以前pmax解決的事情了,你的解決方案可能取決於你的問題。

我不知道那是你的問題,但因爲你沒有給我們一個重複的例子...

我不得不說,我還沒有真正找到問題的根源 - 的下面的簡單例子即使在Inf的值下也能給出合理的答案 - 但我現在沒有時間進一步挖掘。

x <- 1:5 
y <- 1:5 
z <- matrix(outer(x,y,"+"),nrow=5) 

filled.contour(x,y,z) 
filled.contour(x,y,z,color.palette=rainbow) 
z2 <- z 

z2[5,5] <- Inf 

filled.contour(x,y,z2,color.palette=rainbow) 
filled.contour(x,y,z2,col=rainbow(100),nlevels=100) 
+0

這的確使我的解決方案('filled.contour()'不喜歡-Infs!) - 我Concious酒店我沒有給重複的例子,但產生上述地塊的數據是〜1 gb ... – ChrisW

+1

是的,但是......可重現問題藝術的一部分恰恰是找到一種方法來縮小您的範例。在這個過程中,你經常自己找出答案......像往常一樣,請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example ...誠然,它如果'filled.contour'用'Inf'值做了一些明智的事情會更好: –