在散点图上绘制 3d 等高线

Draw 3d contours on scatterplot

我有一个数据集,其中每一行对应一个 x、y 和 z 值。

我想创建变量 x 和 y 的二维散点图并覆盖 3 维的二维等高线 space。

我尝试了以下方法:

load("https://www.dropbox.com/s/ya5g2n47al2cn1j/df.Rdata?dl=0")
df <- as.data.frame(df)
ggplot(data=df, aes(x=df$x,y=df$y,color=df$z))+
  geom_point()+
  geom_contour(aes(z=df$z))

但我收到警告消息:

Warning message:
Not possible to generate contour data 

有办法吗?我可以在网上找到的大多数示例都使用 x、y、z 形式的类似数据

数据如下:

> head(df)
           x         y             z
1 0.15395671 0.1548728 -9.622222e-02
2 0.18148413 0.1554308 -1.091111e-01
3 0.07870902 0.1538021 -2.911111e-02
4 0.13514970 0.1134729 -1.133333e-01
5 0.03504008 0.1053258  4.222222e-03
6 0.02161680 0.1140364 -1.110223e-16

我认为对于 x 和 y 值的每种可能组合,您的数据可能没有 z 值;你不能有一个矩阵是 "x" 行和“y 列并且每个索引都有一个 z 值,你会有差距。你仍然可以用 geom_density_2d() 得到你想要的东西,但是。根据上面的示例数据:

x<-c(0.15395671, 0.18148413, 0.07870902, 0.1351497, 0.03504008, 0.0216168)
y<-c(0.1548728, 0.1554308, 0.1538021, 0.1134729, 0.1053258, 0.1140364)
z<-c(-0.09622222, -0.1091111, -0.02911111, -0.1133333, 0.004222222, 0)

xyz <- data.frame(x,y,z)

ggplot(xyz, aes(x, y, z = z) ) + geom_density_2d()