当使用R中的封装点阵绘制等高线图时,如何控制轮廓线的平滑度?对于轮廓边缘清晰的低分辨率图像,默认值尤其令人不快。
编辑: 这是我的问题 - 片段加入尖角,而我想要一个平滑的关节。
require(lattice)
contourplot(volcano[1:10,1:10])
答案 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)