2011-08-29 61 views
3

我有一個三列的數據框,我想製作數據的圖像/熱圖。在矩陣和圖像()或熱圖中使用的分級數據()

三列是PE,VIX,並用PE和VIX存在x和y RET和RET是ž。

有220條線路中的數據幀,所以我想倉如果可能的數據,該範圍如下。

爲任何建議如何bin中的x和y數據,並且還在圖像中創建中使用的矩陣()?

> range(matr$pe) 
[1] 13.32 44.20 
> range(matr$vix) 
[1] 10.42 59.89 
> range(matr$ret) 
[1] -0.09274936 0.04693118 
> class(matr) 
[1] "data.frame" 
> head(matr) 
    pe vix   ret 
1 20.86 13.16 -0.002931561 
2 20.46 12.53 -0.003546889 
3 20.52 12.42 0.006339165 
4 20.61 13.47 0.009683174 
5 20.57 11.26 -0.002666668 
6 20.81 11.73 0.002895003 

回答

3

這就是我最終做的。我使用akima包中的interp()函數來創建適當的合併矩陣對象。它似乎在完成數據框的分檔和「母校對」工作。在一個側面說明,在爲了與一個傳奇的熱圖,我結束了使用image.plot()方法領域包。這裏的 代碼:

par(bg = 3) 
image.plot(s,xlab="P/E Ratio", ylab="VIX", 
    main="Contour Map of SPY Returns vs P/E Ratio and Vix") 
abline(v=(seq(0,100,5)), col=6, lty="dotted") 
abline(h=(seq(0,100,5)), col=6, lty="dotted") 
contour(s, add=TRUE) 

及其產品有興趣的人士: enter image description here

感謝大家對他們的幫助和建議。

1

你可以使用例如cut是這樣的:

matr$binnedpe<-cut(matr$pe, breaks=10) 
matr$binnedvix<-cut(matr$vix, breaks=10) 

接下來,你可以使用例如ddply(從包裝plyr),以獲得每個倉的手段:

binneddata<-ddply(matr, .(binnedpe, binnedvix), function(d){c(d$binnendpe, d$binnedvix, mean(d$ret))}) 

最後,使用這最後data.frame提請熱圖。我還沒有測試過上述任何一項,但它應該足夠接近你的目標。

1

你應該旋轉光柵包。特別是,函數rasterfromXYZ()應該完成你想要的大部分。使用基礎圖形工具或光柵軟件包很容易爲光柵對象設置「熱圖」顏色範圍。