我使用rgl库中的plot3d绘制了一些三维点。点坐标存储在x、y和z三种矢量中。我想用它的坐标(即(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 )格式中。
发布于 2017-01-26 16:20:25
paste工作在向量上。来自?paste
如果参数是向量,则按项连在一起给出字符向量结果.
因此,只需运行一行就可以生成label_vector。
label_vector = paste( "(" , x, ", " , y , ", " , z , ")", sep = "")发布于 2017-01-26 16:20:59
我想这会给你更清洁的输出
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))谢谢
https://stackoverflow.com/questions/41876086
复制相似问题