2

前几天,我在一本描述 1980-1999 年间出生率随年龄变化的期刊上看到了这张 3D 图片。垂直线是出生率。两条水平线是年龄和年份。

在此处输入图像描述

我真的很想复制一个这样的。我可以想象数据看起来像(简化)

dta = cbind(c(2000, 2005, 2015), 
  c(15, 20, 25), 
  c(20, 24, 35))

colnames(dta) <- c('year', 'age', 'rate')

 year age rate
 2000  15   20
 2005  20   24
 2015  25   35

我搜索了一些 3D 库并且包plot3D出来了。我试图弄清楚该功能是如何outer()工作的,但我无法理解!

你有什么想法我可以重现像上面那样的 3D 情节吗?

4

2 回答 2

0

尝试这个:

library(graphics)
dta = cbind(c(2000, 2005, 2015), 
        c(15, 20, 25), 
        c(20, 24, 35))

colnames(dta) <- c('year', 'age', 'rate')
dta = as.data.frame(dta)
persp(dta$year, dta$age, matrix(runif(9),3,3), theta = 30, phi = 30, expand = 0.5, col = "lightblue",
      ltheta = 120, shade = 0.75, ticktype = "detailed",
      xlab = "year", ylab = "age", zlab = "rate")

参考:demo(persp)在 R

注意:第三个参数 (z) 必须是一个矩阵

于 2015-06-18T12:09:54.580 回答
0

我更喜欢“rgl”包中的 plot3d 函数。由于您只有几点,我调整了限制,以便您可以看到它们。

library("rgl") plot3d(dta, xlim=c(1990, 2030), ylim=c(10,30), zlim=c(15,40))

于 2015-06-18T13:19:54.437 回答