[英]R 3d surface plot with factor variables
我有一個非常簡單的問題,但無法理解。 如何為以下數據創建帶有網格的3D表面圖。
x = c("Jan","Feb","Mar","Apr","May","Jun")
y = c("2010","2011","2012")
z = matrix(seq(1:18),nrow=3)
我已經嘗試過類似的方法,但是仍然無法獲得想要的東西。
persp3d(x, y, z)
plot3d(x, y, z)
謝謝。
當x
是一個因子或字符變量時, persp3d()
給出的錯誤意味着它將僅在x
使用數字(並且可能在y
和z
也使用數字),因此x, y
必須是數字:
x <- 1:6
對應的月份名稱:
month <- c("Jan","Feb","Mar","Apr","May","Jun")
現在,我在這里撤回了前面的聲明,現在我了解了plot3d
如何在x
和y
定義的位置映射z值,因此y
可以保持原樣,但必須為數字:
y = c(2010,2011,2012)
另外, nrow(z)
必須與nrow(x)
相同,這同樣可以從嘗試相反的情況下拋出的錯誤中清楚地看出。 所以:
z = matrix(seq(1:18),nrow=6)
在沒有默認軸的情況下繪制曲面:(從這里開始,該方法與我們使用R中的普通2d圖形制作自定義軸非常相似)
library(rgl) persp3d(x, y, z, axes=F, ylab="", zlab="") box3d()
最后添加您的軸:
axis3d(edge='x++', at=x, labels=month, tick=T) axis3d(edge='y--', at=y, labels=y, tick=T, pos=c(0,0,0), line=-1) axis3d(edge='z+-', at=as.integer(range(z)), labels=as.integer(range(z)), tick=T)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.