【问题标题】:display point labels in scatter3d在 scatter3d 中显示点标签
【发布时间】:2018-10-01 11:46:30
【问题描述】:

我使用scatter3d 函数在 R 中绘制了一个 3d 散点图。 现在,我想在 3d 散点图中的每个点上绘制标签,例如每个点旁边都有其 ID,即“1”、“2”等。

这是我尝试过的:

library("car")
library("rgl")
scatter3d(geometry[,1],geometry[,2],geometry[,3] , surface=FALSE, labels = rownames(geometry), id.n=nrow(geometry))

这个tutorial 说添加参数labels=rownames(geometry), id.n=nrow(geometry) 应该在每个点上显示标签,但这不起作用。

编辑:

我上传了坐标文件here,你可以这样看

geometry = read.csv("geometry.txt",sep = " ")
colnames(geometry) = c("x","y","z")

编辑:

实际上,即使教程中的示例也没有标记点,也没有生成显示的图。包可能有问题。

scatter3d(x = sep.l, y = pet.l, z = sep.w, 
          surface=FALSE, labels = rownames(iris), id.n=nrow(iris))

【问题讨论】:

    标签: r plot


    【解决方案1】:

    如果您想使用 scatter3d 以外的任何其他功能,我可以为您提供快速修复。这可以使用 plot3d 和 text3d 函数来实现。我已经提供了如何实现它的基本代码块。您可以根据需要对其进行自定义。

    plot3d(geometry[,1],geometry[,2],geometry[,3])
    text3d(geometry[,1],geometry[,2],geometry[,3],rownames(geometry))
    points3d(geometry[,1],geometry[,2],geometry[,3], size = 5)
    

    【讨论】:

    • 哪个库提供这些功能?
    • 它使用相同的 RGL 包。您可以尝试使用数据集的子集来确保您的 R 环境正常工作吗?
    • 是的,它适用于较小的集合,我认为我没有足够的 RAM 来加载 3000 多个对象。无论如何,谢谢。
    【解决方案2】:

    经过一番折腾,我得到了它(如果你有兴趣,我也有 plot_ly 的方法)

    test2 <- cbind(dataSet[,paste(d)],set.final$Groups,test)
    X <- test2[,1]
    Y <- test2[,2]
    Z <- test2[,3]
    
    # 3D plot with the regression plane
    
    scatter3d(x = X, y = Y, z = Z, groups = test2$`set.final$Groups`,
              grid = FALSE, fit = "linear",ellipsoid = FALSE, surface=FALSE,
              surface.col = c("green", "blue", "red"),
              #showLabels(x = x, y = y, z = z, labels=test2$test, method="identify",n = nrow(test2), cex=1, col=carPalette()[1], location=c("lr"))
              #labels = test2$test,
              id=list(method = "mahal", n = length(test2$test), labels = test2$test)
              #id.n=nrow(test2$test)
    )
              
              
      #identify3d(x = X, y = Y, z = Z, labels = test2$test, n = length(test2$test),  plot = TRUE, adj = c(-0.1, 0.5), tolerance = 20, buttons = c("right"))
      
      
      rglwidget()
    

    【讨论】:

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