2017-04-21 53 views
0

我有一個數據集,每行對應一個x,y和z值。在散點圖上繪製三維輪廓

我想創建變量x和y的2d散點圖並覆蓋3維空間的2d輪廓。

我試過如下:

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

你能展示DF的樣子顯示幾行,以便很清楚什麼樣的數據看起來可能幫助解決這個 –

+1

我編輯的問題 – tzi

回答

2

我想你的數據可能不具有z的X值的每個可能的組合和y值;你不可能有一個矩陣是「x」行和「y列」,並且在每個索引處的值爲z,但你仍然可以得到差距。然而,你仍然可以得到你想要的結果。以上:

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

+0

謝謝,但我會嗎?。喜歡做3D輪廓,有可能使用插值法做到這一點嗎? – tzi

+0

我很肯定你可以用插值來填充你的矩陣的值,但你可能會要填補很多空白,以免它可能無用。這就是說,我不知道你的數據!也許你不會錯過x-y對的許多z值。 –