2012-01-01 5 views
28

Sto tracciando i coefficienti di correlazione (valori = 0.0: 1.0) per due isotopi misurati in ciascun individuo da due popolazioni. Mi piacerebbe avere un rapporto aspetto fisso per il mio grafico a dispersione in modo che l'asse X e Y siano esattamente della stessa dimensione, indipendentemente dal dispositivo grafico. Suggerimenti?Come definire il rapporto aspetto fisso per il grafico a dispersione

Questa è la mia prima trama in R, tutti i commenti sui perfezionamenti del mio codice sono apprezzati? Infine, vale la pena investire nell'apprendimento delle tecniche di tracciamento di base o dovrei passare direttamente a ggplot2 o reticolo?

Il mio script trama:

## Create dataset 
WW_corr <- 
structure(list(South_N15 = c(0.7976495, 0.1796725, 0.5338347, 
0.4103769, 0.7447027, 0.5080296, 0.7566544, 0.7432026, 0.8927161 
), South_C13 = c(0.76706752, 0.02320767, 0.88429902, 0.36648357, 
0.73840937, 0.0523504, 0.52145159, 0.50707858, 0.51874445), North_N15 = c(0.7483608, 
0.4294148, 0.9283554, 0.8831571, 0.5056481, 0.1945943, 0.8492716, 
0.5759033, 0.7483608), North_C13 = c(0.08114805, 0.47268136, 
0.94975596, 0.06023815, 0.33652839, 0.53055943, 0.30228833, 0.8864435, 
0.08114805)), .Names = c("South_N15", "South_C13", "North_N15", 
"North_C13"), row.names = c(NA, -9L), class = "data.frame") 

opar <- par() 

## Plot results 
par(oma = c(1, 0, 0, 0), mar = c(4, 5, 2, 2))   
plot(1,1,xlim=c(0:1.0), ylim=c(0:1.0), type="n", las=1, bty="n", main = NULL, 
    ylab=expression(paste("Correlation Coefficient (r) for ", delta ^{15},"N ", 
        "\u0028","\u2030","\u0029")), 
    xlab=expression(paste("Correlation Coefficient (r) for ", delta ^{13},"C ", 
        "\u0028","\u2030","\u0029"))) 

points(WW_corr$South_N15, WW_corr$South_C13, pch = 23, cex = 1.25, 
     bg ="antiquewhite4", col = "antiquewhite4") 
points(WW_corr$North_N15, WW_corr$North_C13, pch = 15, cex = 1.25, 
     bg ="black") 
axis(1, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01) 
axis(2, at = seq(0, 1.0, by = 0.1), labels = F, tick = TRUE, tck = -0.01) 
abline(h=.86, v=.86, col = "gray60", lty = 2) 
legend("topleft", c("North", "South"), pch = c(15, 23), 
     col = c("black", "antiquewhite4"), pt.bg = c("black", "antiquewhite4"), 
     horiz=TRUE, bty = "n") 

par(opar) 
+1

Sì, fai come dico e non come faccio :-), e impara 'ggplot'. –

+2

Hai chiaramente capito bene le basi della grafica di base, quindi consiglierei almeno di dare un'idea di ggplot2/lattice, dal momento che data la qualità di questa domanda non sarà un investimento enorme per te. Sono abbastanza diversi, ma li raccoglierai velocemente. Una volta che hai il senso della sintassi generale + flusso di ognuno sarai in grado di decidere su quale vuoi passare la maggior parte del tuo tempo. Ma è molto utile avere una familiarità di base con ciascuno. – joran

risposta

31

Utilizzando asp=1 come parametro per tracciare otterrà interpretato dalla chiamata plot.window basso livello e dovrebbe dare un rapporto di aspetto unitario. Esiste la possibilità che una chiamata che utilizza ylim e xlim possa entrare in conflitto con una scpecification di aspect ratio e che lo asp debba essere "prevalente". Questo è un primo grafico R molto impressionante, da lontano. E una costruzione di domande eccellente. Voti alti.

L'unica nota stonata era l'utilizzo della costruzione xlim=c(0:1.0). Poiché xlim si aspetta un vettore a due elementi, mi sarei aspettato xlim = c (0,1). Meno tasti e meno soggetti a errori in futuro se si è passati a un diverso insieme di limiti, poiché l'operatore ":" ti avrebbe dato risultati imprevisti se avevi provato con "0: 2.5".

+0

Grazie! Sì, il mio errore sull'uso di x e ylim di due punti contro virgola. Immagino di essere stato fortunato a usare 0 a 1 piuttosto che a 0 a 2,5. Sono ancora un po 'incerto sulla differenza tra l'utilizzo di asp = 1 contro asp = TRUE. –

+1

'TRUE == 1', quindi nessuna differenza. Ma potresti usare altre proporzioni oltre a 1. –

35
par(pty="s") 
plot(...) 

imposta il tipo di complotto per essere quadrata, che farà il lavoro (credo) nel tuo caso, perché il vostro x e y gamme sono gli stessi. Opzione discretamente ben documentata in? Par.