我有一个数据集,其中每一行对应一个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
答案 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()