我必须生成 filled.contour
图,这些图在 z 值中具有某种对称性,如下面的代码所示
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,col=rainbow(200),nlevels=200)
我希望能够描绘出 z 值的水平,例如某些水平或增量 (2,4,6,8,10) 增量,以获得以下图
我想保留 col=rainbow(200)
的级别,以便绘制平滑的颜色和颜色过渡,但我想描绘某些值/增量。
这可能吗?我会很感激一个基本的 R 解决方案,但如果这是不可能的,任何解决方案都会很好(ggplot、lattice)
最佳答案
您可以使用 countourLines() 添加行和 text() 添加文本:
txtlab <- c("2", "4", "6", "8", "Inf")
txtpos <- c(1.25, 2, 3, 4, 4.75)
ctlns <- contourLines(x, y, z2, levels=c(3, 5, 7, 9))
filled.contour(x,y,z2,col=rainbow(200),nlevels=200,
plot.axes={axis(1); axis(2); text(txtpos, txtpos, txtlab, cex=1.5);
sapply(1:4, function(x) lines(ctlns[[x]][[2]], ctlns[[x]][[3]], lwd=2))
})
关于r - filled.contour - 描绘 z 值水平的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184973/