2015-06-08 13 views
8

Ho il seguente set di dati e codici per costruire il grafico del contorno di densità 2D per ogni coppia di variabili nel frame di dati. La mia domanda è se esiste un modo in ggpairs() per assicurarsi che le scale siano le stesse per diverse coppie di variabili come la stessa scala per differenti aspetti in ggplot2. Ad esempio, vorrei che la scala x e la scala y fossero tutte da [-1, 1] per ciascuna immagine.Come impostare le stesse scale su diversi sfaccettature con ggpairs()

Grazie in anticipo!

La trama sembra enter image description here

library(GGally) 
ggpairs(df,upper = list(continuous = "density"), 
    lower = list(combo = "facetdensity")) 

#the dataset looks like 
print(df) 
     x   y   z    w 
1 0.49916998 -0.07439680 0.37731097 0.0927331640 
2 0.25281542 -1.35130718 1.02680343 0.8462638556 
3 0.50950876 -0.22157249 -0.71134553 -0.6137126948 
4 0.28740609 -0.17460743 -0.62504812 -0.7658094835 
5 0.28220492 -0.47080289 -0.33799637 -0.7032576540 
6 -0.06108038 -0.49756810 0.49099505 0.5606988283 
7 0.29427440 -1.14998030 0.89409384 0.5656682378 
8 -0.37378096 -1.37798177 1.22424964 1.0976507702 
9 0.24306941 -0.41519951 0.17502049 -0.1261603208 
10 0.45686871 -0.08291032 0.75929106 0.7457002259 
11 -0.16567173 -1.16855088 0.59439600 0.6410396945 
12 0.22274809 -0.19632766 0.27193362 0.5532901113 
13 1.25555629 0.24633499 -0.39836999 -0.5945792966 
14 1.30440121 0.05595755 1.04363679 0.7379212885 
15 -0.53739075 -0.01977930 0.22634275 0.4699563173 
16 0.17740551 -0.56039760 -0.03278126 -0.0002523205 
17 1.02873716 0.05929581 -0.74931661 -0.8830775310 
18 -0.13417946 -0.60421101 -0.24532606 -0.1951831558 
19 0.11552305 -0.14462104 0.28545703 -0.2527437818 
20 0.71783902 -0.12285529 1.23488185 1.3224880574 

risposta

2

non sono sicuro se questo è possibile dalla funzione ggpairs direttamente, ma è possibile estrarre una trama da ggpairs e modificarlo e quindi salvarlo di nuovo.

Questo esempio esegue il ciclo sul triangolo inferiore della matrice di grafici e sostituisce le scale di assi xey esistenti.

data(tips, package = "reshape") 
## pm is the original ggpair object 
pm <- ggpairs(tips[,c("total_bill", "tip", "size")]) 
## pm2 will be modified in the loop 
pm2 <- pm 
for(i in 2:pm$nrow) { 
    for(j in 1:(i-1)) { 
    pm2[i,j] <- pm[i,j] + 
     scale_x_continuous(limits = c(-5, 75)) + 
     scale_y_continuous(limits = c(-5, 10)) 
} 
} 

pm assomiglia a questo

enter image description here

e pm2 assomiglia a questo

enter image description here

Per risolvere il problema, si sarebbe ciclo in tutta la matrice di trame e imposta le scale xey per avere limiti compresi tra -1 e 1.