在filled.contour()中回收的颜色

时间:2011-11-14 14:37:09

标签: r

我使用fill.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()的值,但这也没有任何区别。

1 个答案:

答案 0 :(得分:0)

如果我的矩阵中有负值​​(因此我的log(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)