【问题标题】:Label plot3d points with their coordinates用它们的坐标标记 plot3d 点
【发布时间】:2017-01-27 00:20:59
【问题描述】:

我使用 rgl 库中的 plot3d 在三个维度上绘制了多个点。点坐标存储在三个向量xyz 中。我想用它的坐标来注释图中的每个点,i。 e. (x, y, z)

使用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 ) 格式。

【问题讨论】:

    标签: r


    【解决方案1】:

    paste 适用于向量。来自?paste

    如果参数是向量,则将它们逐项连接到 给出一个字符向量结果。

    因此,您只需运行一行即可生成label_vector

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

    【讨论】:

    • 此时两个答案都是正确的,但这个答案更侧重于我的问题的核心。
    【解决方案2】:

    我认为这会给你带来更清晰的输出

    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))
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多