R中有吸引力的3D图(Attractive 3D plot in R)

2019-08-31 15:59发布

我写一个提案,并需要一个3D图是这样的:

但优选更大的吸引力。 我需要每个点的大小,以反映该物种的丰富性和通过连接点创建的卷的轮廓。

样本数据:

input<-data.frame(
label=c("sp1","sp2","sp3","sp4"),
trait_x=c(6,6,6,1),
trait_y=c(7,7,7,1),
trait_z=c(8,8,8,1),
point_size=c(6,7,8,1)
)
input
  label trait_x trait_y trait_z point_size
1   sp1       6       7       8        6
2   sp2       6       7       8        7
3   sp3       6       7       8        8
4   sp4       1       1       1        1

如何使这样的图更具吸引力的任何建议(可能包括网格线?我不希望任何数字上的轴不过)

我已经打得四处scatterplot3d ,但它并不绘制我的观点,我个人认为立方体有一种异样的目光吧...好像是不太准确......

library(scatterplot3d)
x<-input$trait_x
y<-input$trait_y
z<-input$trait_z
scatterplot3d(x,y,z,xlim=c(0,10),ylim=c(0,10),zlim=c(0,10))

Answer 1:

这应该让你开始使用包rgl 。 注:在重新阅读我看到我使用你的某某COORDS比你做了一点不同,但概念是相同的。

input<-data.frame( # I adjusted the values for better appearance in demo
label=c("sp1","sp2","sp3","sp4"),
trait_x=c(6,7,11,1),
trait_y=c(10,7,9,1),
trait_z=c(4,7,6,1),
point_size=c(6,7,8,1)
)
names(input) <- c("name", "x", "y", "z", "radius")
input$radius <- input$radius*0.2

require("rgl")

spheres3d(input[,2:4], radius = input[,5], col = c("red", "green", "blue", "orange"), alpha = 0.5)
axes3d(box = TRUE)
title3d(xlab = "x_trait", ylab = "y_trait", zlab = "z_trait")
text3d(input[1,2:4], texts = "species X")
# next line is clunky but you can do it more elegantly
segs <- rbind(input[1:2,2:4], input[2:3,2:4], input[3:4,2:4], input[c(4,1),2:4])
segments3d(segs)

现在,您可以交互地旋转你的图,然后使用rgl.snapshot得到一个硬拷贝(使用抗锯齿论点spheres3d将改进图)。



文章来源: Attractive 3D plot in R