2015-05-07 55 views
6

我有數據的XTS對象通過時間來繪製一些2D數據:我需要通過時間(因此3D)

> head(vixData[,2:8], 5) 
       F1 F2 F3 F4 F5 F6 F7 
2009-06-08 30.25 32.00 31.70 31.75 31.65 30.85 29.95 
2009-06-09 29.10 30.95 30.95 31.15 31.10 30.40 29.45 
2009-06-10 29.10 31.20 31.30 31.45 31.50 30.75 29.95 
2009-06-11 28.10 30.60 30.75 30.90 31.00 30.20 29.25 
2009-06-12 28.35 29.95 30.10 30.45 30.50 29.90 29.05 

的F1-F7將形成一個曲線,象下面這樣:

plot(1:7, vixData[399,2:8], type = 'o', pch = 6) 

enter image description here

我想這樣做的時間。 xts對象的行是每天的值,它們會生成曲線。我期待產生這樣的事情:

enter image description here

我想使用PLOT3D格式,並surf3D,但我不明白的文檔,或如何將數據幀轉換爲surf3D想要什麼。任何想法或更好的包裝建議?

我曾嘗試使用格子::線框作爲意見提出,但我得到以下幾點:

curveData <- vixData[-(1:100),2:8, drop = FALSE] 
wireframe(t(as.matrix(curveData)), shade = TRUE, scales = list(arrows = FALSE), 
     aspect = c(0.65, 0.25), drape = TRUE, 
     zlab = "Level", xlab = "Contract", ylab = "Time", panel.aspect = .75) 

enter image description here

這看起來相當接近!但是 - 我希望我可以旋轉圖像並沿「時間」軸延伸一些,以便更清晰。有參數嗎?我無法在文檔中找到它。

+1

究竟你嘗試,什麼也沒有工作?似乎只是轉換爲矩陣將與線框一起工作:'lattice :: wireframe(as.matrix(vixData),drape = TRUE)' – MrFlick

+0

我試圖使用plot3D。我會嘗試格子,我沒有聽說過它。 – lukehawk

+0

您還可以在平面(2D)圖上繪製x軸上的日期和y軸上的F1:7,並用顏色表示您的值。您需要將數據轉換爲矩陣,然後才能使用image()。 – MikeRSpencer

回答

3

chartSeries3d的源文件應該有所幫助。此外,您可能會感興趣的

source("http://www.quantmod.com/examples/chartSeries3d/chartSeries3d.alpha.R") 
library("xts") 
data("sample_matrix") 
chartSeries3d0(as.xts(sample_matrix), col=c("lightblue","blue")) 

TimeSeriesPlot

-1

Excel中的三維曲面圖中是你最好的選擇。 甚至Excel 2007都有該圖表。 您可以旋轉軸,很容易地改變顏色

click volcano data example

+1

不,這是R.用Excel胡說。 – lukehawk