2015-06-18 70 views
2

我在日記 日前看到了這張3D圖片,描述了按年齡在1980-1999之間的出生率隨時間的演變。 垂直線是出生率。兩條橫線分別是年齡和年份。試圖重現費率或比例的R的3D圖片

enter image description here

我真的想複製一個這樣的。 我可以想像中的數據會看起來像(簡體)

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情節?中的R demo(persp)

注::

+0

試試這個來理解'outer'函數。 '外(1:10,1:10,FUN = 「+」)'。 – user1436187

回答

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") 

價的thirs參數(Z)必須是一個矩陣

+0

我從你的例子中得到一個錯誤**錯誤在persp.default(dta $ year,dta $ age,dta $ rate,theta = 30,phi = 30,: 無效'z'參數** – giacomo

+0

檢查'class (dta $ rate)'是一個因子 – user1436187

+0

** if(any(diff(x)<= 0)|| any(diff(y)<= 0)中的錯誤)stop(「increase'x'and'y期望值「): 缺少值,其中TRUE/FALSE需要 另外:警告消息: 1:在Ops.factor(diff(x),0)中:'<='對因素無意義 2:In Ops .factor(diff(y),0):'<='對於因素沒有意義** – giacomo

0

我更喜歡來自 「RGL」 包PLOT3D格式的功能。既然你只有幾點,我調整了限制,以便你能看到它們。

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