2017-01-26 89 views
0

我有三個維度的點數,我正在使用rgl庫plot3d繪圖。點座標存儲在三個矢量x,yz中。我想用它的座標來標註劇情中的每個點。即(x, y, z)標籤plot3d點與他們的座標

使用text3d我將不得不從座標向量創建一個標籤字符串向量。我迄今發現的唯一的解決辦法是遍歷座標向量:

library(rgl); 

x = c(1, 2, 3) 
y = c(4, 5, 6) 
z = c(7, 8, 9) 
label_vector = 1:3 

for (i in 1:3) { 
    l = paste("(", x[i], y[i], z[i], ")", collapse=" ") 
    label_vector[i] = l 
} 

plot3d(x, y, z) 
text3d(x, y, z, label_vector) 

有沒有更優雅的方式來做到這一點?理想情況下,但不一定,在(x, y, z)而不是我的示例中的(x y z)格式。

回答

1

paste在矢量上工作。從?paste

如果參數矢量,它們是級聯術語逐術語 得到字符向量結果。

所以,你可以通過運行只需一行

label_vector = paste("(" , x, ", " , y , ", " , z , ")", sep = "") 
+1

兩個答案這一點是正確的,但這一點更多地關注我的問題的核心。 – Raketenolli

1

產生label_vector我覺得這會給你很多幹淨的輸出

library(rgl); 
x = c(1, 2, 3) 
y = c(4, 5, 6) 
z = c(7, 8, 9) 

label_vector <- paste0("[",x,",",y,",",z,"]") 
plot3d(x, y, z, col= "red" , type ="s", radius=0.02) 
text3d(x, y, z, label_vector,adj=c(-0.25,0)) 

謝謝你