有没有理由为什么R功能轮廓和图像(两个图形包)使用不同的水平/休息?

时间:2013-11-20 14:09:46

标签: r contour levelplot

我认为这个问题的标题说明了一切 - 我无法理解为什么来自同一个包(graphics)的两个函数会以不同的方式处理区间。 image函数使用breaks参数定义级别,函数cut分配颜色:

  

“如果指定breaks,则zlim未使用,并且使用的算法遵循cut,因此间隔在右侧关闭,在左侧打开,除了最低间隔,即在两端关闭。*“

这意味着,例如如果将中断定义为c(0,100,150,170,190,200),则将150的值分配给区间100&lt; x <= 150:

Levels: (0,100] (100,150] (150,170] (170,190] (190,200]

例如,下图显示了两个可能的图像图,其中轮廓重叠。只有在使用略低的断点时,才能将颜色间隔与轮廓匹配:

pal=colorRampPalette(c("green", "cyan", "yellow", "red", "pink"), space="rgb")
breaks <- c(0,100, 150, 170, 190, 200)
par(mfrow=c(1,2), mar=c(0.2,0.1,3,0.1))

image(seq(dim(volcano)[1]), seq(dim(volcano)[2]), volcano, col=pal(length(breaks)-1), breaks=breaks, xaxt="n", yaxt="n", ylab="", xlab="")
contour(seq(dim(volcano)[1]), seq(dim(volcano)[2]), volcano, levels=breaks, add=TRUE)
box()
mtext("image(breaks=breaks)\ncontour(levels=breaks)", side=3, line=0.5)

image(seq(dim(volcano)[1]), seq(dim(volcano)[2]), volcano, col=pal(length(breaks)-1), breaks=breaks-0.01, xaxt="n", yaxt="n", ylab="", xlab="")
contour(seq(dim(volcano)[1]), seq(dim(volcano)[2]), volcano, levels=breaks, add=TRUE)
box()
mtext("image(breaks=breaks-0.01)\ncontour(levels=breaks)", side=3, line=0.5)

enter image description here

那么,任何人都可以告诉我是否存在这种不匹配的原因,或者可能更好的解决方法而不是我所展示的那种?

0 个答案:

没有答案