2011-08-29 3 views
3

데이터 프레임에 세 개의 열이 있으며 데이터의 이미지/히트 맵을 만들고 싶습니다.행렬 및 이미지() 또는 히트 맵()에 사용하기위한 비닝 데이터

세 개의 열은 pe, vix 및 ret이며 pe는 x, y는 ret이고 z는 ret입니다.

데이터 프레임에 220 줄이 있으므로 가능한 경우 데이터를 비 웁니다. 범위는 아래에 있습니다.

x 및 y 데이터를 저장하고 image()에 사용할 행렬을 만드는 방법에 대한 제안 사항이 있습니까?

> 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() 함수를 사용하여 적절히 binned 된 행렬 객체를 만들었습니다. 비닝과 데이터 프레임의 'matricizing'작업을 수행하는 것으로 보입니다. 보조 노트에서 히트 맵을 전설로 만들기 위해 패키지의 패키지의 image.plot() 메소드를 사용했습니다. 그들의 도움과 제안에 대한 모든 사람에게 enter image description here

감사 : 관심있는 사람들을위한

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) 

및 결과 제품 : 여기에 코드입니다.

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() 함수는 원하는 대부분을 수행해야합니다. 기본 그래픽 도구 나 래스터 패키지를 사용하면 래스터 객체의 '히트 맵'색상 범위를 쉽게 설정할 수 있습니다.

관련 문제