2012-12-10 3 views
3

Je voudrais beaucoup recréer ce graphique en utilisant une approche pure ggplot2 puisque je voudrais résoudre tous mes tracés en utilisant ce paquet.Comment puis-je créer ce graphique. Graphique de corrélation dans R en utilisant le paquetage ggplot2?

Plot that I would like to recreate using the ggplot2 package

Le code pour générer cette parcelle particulière est donnée ci-dessous. Vous pouvez en savoir plus sur this site. J'ai créé un petit jeu de données pour jouer avec. Le code suivant définit un data.frame et le fait fondre dans un format que ggplot aime habituellement.

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) 

Maintenant, je sais que ce moltdf peut être passé à ggplot mais je ne sais pas comment générer les différents segments de l'intrigue plutôt informationdense ci-dessus.

+0

J'ai essayé cette approche (http: // theatavism.blogspot.dk/2009/05/plotting-corr elation-matrix-with.html), mais ce n'est pas ce que je veux. Je veux exactement l'intrigue dans l'image ci-jointe. Je n'ai aucune idée de comment créer cela dans ggplot2. D'où ma question. –

+2

Si vous voulez exactement ce tracé, je ne comprends pas vraiment pourquoi vous voulez utiliser 'ggplot2'. Juste pour utiliser 'ggplot2'? – Roland

+0

Je suis très tenté de poster une solution, et peut même mordre si vous faites le travail de base d'obtenir les données dans un cadre de données, prêt à traiter et passer à ggplot. – Andrie

Répondre

5

Je pense que vous avez besoin de ggpairs ici - éventuellement avec d'autres réglages. Exemple:

> library(GGally) 
> ggpairs(mtcars) 

simple ggpairs demo


Mise à jour: basée sur la question mise à jour avec les données ajouté:

> ggpairs(mydf[, 2:5]) 

ggpairs on mydf

+0

Paquet intéressant en effet et va un long chemin à présenter presque la même information. Mais je dois admettre que j'aime mieux la présentation générée par le graphique. Fonction de corrélation. –

Questions connexes