我试图通过stat_contour()将轮廓线添加到我的ggplot / ggplot2图中。不幸的是,我无法为您提供应该从中评估点值的真实数据。但是,另一个易于重现的示例具有相同的行为:

testPts <- data.frame(x=rep(seq(7.08, 7.14, by=0.005), 200))
testPts$y <- runif(length(testPts$x), 50.93, 50.96)
testPts$z <- sin(testPts$y * 500)

ggplot(data=testPts, aes(x=x, y=y, z=z)) + geom_point(aes(colour=z))
       + stat_contour()


这将导致以下错误消息:


if(nrow(layer_data)== 0)return()时出错:参数长度
零另外:警告消息:无法生成轮廓
数据


该示例看起来与在stackoverflow上发布的其他示例或在我的官方手册/教程中发布的其他示例没有什么不同,并且如果我为stat_contour提供更多规范,似乎无关紧要。看来,该函数不会按照错误消息的指示传递数据(层)。

感谢您的想法和建议!

最佳答案

对于间隔不规则的数据,请使用stat_density2d而不是stat_contour

library(ggplot2)

testPts <- data.frame(x=rep(seq(7.08, 7.14, by=0.005), 200))
testPts$y <- runif(length(testPts$x), 50.93, 50.96)
testPts$z <- sin(testPts$y * 500)

(ggplot(data=testPts, aes(x=x, y=y, z=z))
+ geom_point(aes(colour=z))
+ stat_density2d()
)

10-08 08:09