2012-12-10 2 views
3

순수한 ggplot2 접근 방식을 사용하여이 그래프를 다시 만들고 싶습니다. 그 패키지를 사용하여 모든 플로팅을 해결하고 싶습니다.ggplot2 패키지를 사용하여 차트에서 R을 어떻게 만들 수 있습니까?

Plot that I would like to recreate using the ggplot2 package

이 특정 플롯을 생성하기위한 코드는 아래에 주어진다.

library(PerformanceAnalytics) 
library(quantmod) 
getSymbols(c('SPY','LQD','GLD')) 
Data <- cbind(Cl(SPY),Cl(LQD),Cl(GLD)) 
Year <- as.factor(format(index(Data),'%Y')) 
chart.Correlation(Data,bg=seq(1:5)[Year],pch=21) 
par(xpd=TRUE) 
legend(0, 1, as.vector(unique(Year)), fill=seq(1:5)) 

자세한 내용은 this site에서 확인할 수 있습니다.

나는 작은 데이터 세트를 가지고 놀았습니다. 다음 코드는 data.frame을 정의하고이를 ggplot이 일반적으로 좋아하는 형식으로 만듭니다.

library(ggplot2) 
library(reshape2) 
mydf<-structure(list(SPY = c(141.37, 141.67, 140.54, 141.19, 141.07, 
        141.54, 142.16, 143.24, 142.96, 143.02, 142.54, 142.82, 142.38, 
        142.8, 143.95, 142.26, 142.13, 142.05, 142.79, 143.75, 144.86, 
        141.31, 141.19, 138.91, 140.37, 141.29, 140.15, 141.28, 138.17, 
        136.98, 133.43, 132.06, 130.72, 133.86, 134.99, 133.04, 135.24, 
        135.91, 134.91, 137.37, 92.96, 92.85, 93.47, 90.67, 91.04, 89.09, 
        86.95, 87.11, 84.37, 84.4, 85.06, 80.57, 84.05, 82.75, 83.11, 
        83.68, 84.53, 87.39, 84.55, 82.83), 
      LQD = c(106.45, 107.25, 107.19, 107.15, 107.17, 107.03, 106.7, 106.59, 
        106.71, 106.56, 106.87, 
        106.81, 106.88, 106.59, 106.64, 106.3, 106.23, 106.18, 106.33, 
        106.78, 105.73, 106.6, 106.47, 106.27, 106.05, 105.74, 106.51, 
        106.07, 106.64, 106.48, 106.98, 106.8, 107.03, 107.17, 106.26, 
        107.41, 107.38, 107.2, 107.18, 107.53, 100.61, 101.3, 101.47, 
        100.62, 101.34, 102.6, 102.07, 101.85, 101.4, 101.6, 101.6, 100.1, 
        99.6, 99.23, 98.57, 97.69, 99.53, 100.32, 99.12, 99.82), 
      GLD = c(62.28, 61.65, 60.17, 60.48, 60.85, 60.59, 60.63, 62.17, 61.97, 62.64, 
        62.26, 63, 62.72, 64.23, 64.33, 64.06, 64.17, 63.77, 64.22, 64.83, 
        85.57, 85.13, 84.77, 86.78, 86.55, 88.25, 88.58, 89.54, 87.99, 
        86.7, 86.5, 87.42, 88.17, 87.89, 90.08, 90.3, 91.75, 91.15, 92.06, 
        91.4, 86.23, 84.48, 85.13, 82.75, 84.46, 83.92, 80.76, 80.88, 
        79.79, 80.39, 82.71, 84.52, 84.15, 84.58, 88.53, 88.95, 88.38, 
        87.42, 89.5, 91.31), 
      Year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
           1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
           2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
           2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
           3L, 3L, 3L, 3L, 3L, 3L), 
          .Label = c("2007", "2008", "2009"), 
          class = "factor")), 
     .Names = c("SPY", "LQD", "GLD", "Year"), 
     row.names = c("2007-01-02", "2007-01-03", 
        "2007-01-04", "2007-01-07", "2007-01-08", "2007-01-09", "2007-01-10", 
        "2007-01-11", "2007-01-15", "2007-01-16", "2007-01-17", "2007-01-18", 
        "2007-01-21", "2007-01-22", "2007-01-23", "2007-01-24", "2007-01-25", 
        "2007-01-28", "2007-01-29", "2007-01-30", "2008-01-02", "2008-01-03", 
        "2008-01-06", "2008-01-07", "2008-01-08", "2008-01-09", "2008-01-10", 
        "2008-01-13", "2008-01-14", "2008-01-15", "2008-01-16", "2008-01-17", 
        "2008-01-21", "2008-01-22", "2008-01-23", "2008-01-24", "2008-01-27", 
        "2008-01-28", "2008-01-29", "2008-01-30", "2009-01-01", "2009-01-04", 
        "2009-01-05", "2009-01-06", "2009-01-07", "2009-01-08", "2009-01-11", 
        "2009-01-12", "2009-01-13", "2009-01-14", "2009-01-15", "2009-01-19", 
        "2009-01-20", "2009-01-21", "2009-01-22", "2009-01-25", "2009-01-26", 
        "2009-01-27", "2009-01-28", "2009-01-29"), 
     class = "data.frame") 
mydf<-data.frame(ID=rownames(mydf), mydf) 
moltdf<-melt(mydf) 

는 지금이 moltdf가 ggplot에 전달 될 수 있다는 것을 알고 있지만, 나는 위의 오히려 informationdense 플롯에서 다른 세그먼트를 생성하는 방법을 모른다.

+0

: 추가 데이터로 업데이트 된 질문에 따라 // theatavism.blogspot.dk/2009/05/plotting-corr elation-matrix-with.html). 그러나 그것은 내가 원하는 것이 아닙니다. 나는 첨부 된 이미지에서 정확하게 음모를 원한다. ggplot2에서 어떻게 생성하는지 모르겠습니다. 그러므로 제 질문입니다. –

+2

정확히이 플롯을 원한다면 나는 왜 당신이'ggplot2'를 사용하는지 이해하지 못합니다. 'ggplot2'를 사용하기 위해서? – Roland

+0

나는 솔루션을 게시하고 싶다. 데이터 프레임을 처리하고 ggplot으로 넘겨 줄 데이터 프레임으로 데이터를 가져 오는 기본적인 작업을한다면 실제로 물지 수있다. – Andrie

답변

5

나는 여기에 ggpairs이 필요하다고 생각합니다. 아마도 약간의 수정이 필요할 것입니다. 예 :

> library(GGally) 
> ggpairs(mtcars) 

simple ggpairs demo


업데이트이 : 나는이 방법을 (HTTP를 시도

> ggpairs(mydf[, 2:5]) 

ggpairs on mydf

+0

재미있는 패키지는 실제로 거의 동일한 정보를 제공하기 위해 먼 길을 간다. 하지만 차트에서 생성 된 프레젠테이션이 더 마음에 든다는 것을 인정해야합니다. 상관 관계 함수. –

관련 문제