我有一個矩陣(m),我試圖繪製該矩陣的3D表示。在R中使用persp3D進行三維繪圖 - 軸問題
> dput(head(m))
structure(c(21930, 21844, 21758, 21672, 21586, 21500, 22016,
21930, 21844, 21758, 21672, 21586, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(6L, 26L), .Dimnames = list(
NULL, c("freq.min", "freq.max", "X0", "X1", "X2", "X3", "X4",
"X5", "X6", "X7", "X8", "X9", "X10", "X11", "X12", "X13",
"X14", "X15", "X16", "X17", "X18", "X19", "X20", "X21", "X22",
"X23")))
我設法繪製三維表面曲線,但兩者的軸和軸標籤是不正確的。請注意,下面的三維表面圖使用整個矩陣,而不僅僅是標題,爲了簡潔起見,我只在這裏將其包含在內。
persp3D(z = m[,3:26], col = "lightgrey", shade = 0.5, ticktype = "detailed", axes=T)
讓我們先從軸本身:從X0變爲X23應該是矩陣(列名)的X軸的軸,但在這裏它被視爲Y軸。 Y軸,在這裏被認爲是X軸,範圍從0到22016,間隔爲86的256個區域。
我花了很長時間在互聯網上搜索關於如何更改軸標籤的答案,但沒有成功了。從我明白,如果我在persp3D(軸= F),那麼我可以自定義軸在隨後的線,像這樣關閉軸參數:
axis3d(edge= 'y+-', at =seq(0,23,by=1) ,
labels = seq(0,23,by=1))
然而,RGL裝置彈出,並且僅繪製的軸沒有實際繪圖本身,而繪圖本身在內置的R圖形設備中保持不變。
如何成功更換軸?
哪裏您的y值來嗎?它是否寫在矩陣中? ('freq.min'和'freq.max'大於21586)。第1行是0,第2行是86? (但'21586/86'爲251) – cuttlefish44
@dww,謝謝你的建議 - 我會在未來記住這一點,以避免出現問題。 – SilvanD
@墨魚魚44,我的y值對應於256行。我錯誤輸入了 - 感謝您的支持。最上一行的頻率最大值爲22016,除以86寬度的間隔,得到256 – SilvanD