在散点图上绘制三维轮廓

时间:2017-04-21 19:56:27

标签: r ggplot2 scatter-plot contour

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

我想创建一个变量x和y的二维散点图,并覆盖三维空间的二维轮廓。

我尝试了以下内容:

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

1 个答案:

答案 0 :(得分:2)

我认为对于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()

enter image description here