等高线图中轮廓线的平滑度

时间:2012-03-26 15:27:19

标签: r lattice

当使用R中的封装点阵绘制等高线图时,如何控制轮廓线的平滑度?对于轮廓边缘清晰的低分辨率图像,默认值尤其令人不快。

编辑: 这是我的问题 - 片段加入尖角,而我想要一个平滑的关节。

require(lattice)
contourplot(volcano[1:10,1:10])

2 个答案:

答案 0 :(得分:1)

如果没有可重复的例子,要准确理解你想要的东西是有点棘手的。

无论如何,请尝试KernSmooth包。首先,我们打包并获取一些数据:

library("KernSmooth")
data(geyser, package="MASS")

接下来我们使用bkde2D函数来计算2-d核密度估计值。更改带宽以获得更平滑:

x <- cbind(geyser$duration, geyser$waiting)
est <- bkde2D(x, bandwidth=c(0.7, 7))

然后在平滑输出上绘制等高线图:

contour(est$x1, est$x2, est$fhat)

答案 1 :(得分:1)

以下是使用loess回归平滑更新问题的示例数据的答案。

# original data - jagged contours
require(lattice)
contourplot(volcano[1:10, 1:10])

# convert to long form
require(reshape2)
a = melt(volcano)

# use loess to smooth
# higher values of span will deliver more smoothing
b = loess(value ~ Var1+Var2, data=a, span=0.02)

# estimate the smoothed values on our grid
smooth = predict(b, newdata=data.frame(Var1=a$Var1, Var2=a$Var2))
smooth = array(smooth, dim=dim(volcano))

# the result
contourplot(smooth[1:10, 1:10])


# worth also comparing the bigger picture
contourplot(volcano)
contourplot(smooth)