R中的3D管/管图 - 创建树根的图

时间:2018-02-24 21:00:05

标签: r ggplot2 rgl ggraph tidygraph

我正在尝试在R中创建模拟树根的3D图。以下是根系统随时间增长的示例:

image 1

这实际上是一个圆柱体的3D网络,其中圆柱直径(以及可选的颜色)代表根的大小。可用数据包括:

  • 根质心的x,y,z
  • “父”根的方向(例如+ x,-x,+ y,-y,+ z,-z),尽管可以通过几种不同方式捕获此信息,包括通过计算x,y,z在绘图之前的父母。
  • root的大小

示例3D数据为here,但这是我第一次使用ggplot2::geom_spoke在2D中尝试:

dat <- data.frame(x = c(0,1,-1,0,1,-1),
              y = c(-1,-1,-1,-2,-2,-2),
              biomass = c(3,1.5,1.5,1,1,1), 
              parent.dir = c("+y","-x","+x","+y","+y","+y"))
dat$parent.dir <- as.numeric(as.character(factor(dat$parent.dir, 
                                             levels = c("-x", "+x", "-y", "+y"),
                                             labels = c(pi, 0, pi*3/2, pi/2)))) 

ggplot(dat, aes(x = x, y = y)) +
  geom_point(x = 0, y = 0, size = 20) +
  geom_spoke(radius = 1,
         aes(angle = parent.dir,
             size  = biomass)) + 
  coord_equal()

enter image description here

我更喜欢基于ggplot2框架的解决方案,但我意识到ggplot2没有大量的3D选项。一种有趣的方法是通过ggraphtidygraph包创造性地利用网络图的概念。据我所知,虽然这些软件包仅在2D中运行,但他们的开发人员也有一些3D interesting related ideas也可以应用。

rgl库似乎是R中3D图的首选,但rgl解决方案似乎更复杂,缺乏ggplot2的其他好处,例如按照例子中的年份分面,轻松调整比例等。

示例数据在这里:

0 个答案:

没有答案