2012-01-01 9 views
28

Estoy graficando coeficientes de correlación (valores = 0.0: 1.0) para dos isótopos medidos en cada individuo de dos poblaciones. Me gustaría tener una relación de aspecto fija para mi diagrama de dispersión para que los ejes xey sean exactamente del mismo tamaño sin importar el dispositivo gráfico. Sugerencias?Cómo definir una relación de aspecto fija para el gráfico de dispersión

Esta es mi primera parcela en R, ¿se agradece cualquier comentario sobre el refinamiento de mi código? Finalmente, ¿vale la pena invertir en aprender las técnicas básicas de trazado o debo saltar directamente a ggplot2 o celosía?

Mi script parcela:

## 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í, haz lo que digo y no como yo :-), y aprende 'ggplot'. –

+2

Claramente has aprendido bastante bien los conceptos básicos de gráficos básicos, por lo que te recomendaría al menos darte una idea de ggplot2/reticulado, ya que dada la calidad de esta pregunta, no será una gran inversión de tiempo para ti. Son bastante diferentes, pero los recogerás rápidamente. Una vez que tenga una idea de la sintaxis general + flujo de cada uno, podrá decidir en cuál desea pasar la mayor parte del tiempo. Pero vale la pena tener una familiaridad básica con cada uno. – joran

Respuesta

31

Usando asp=1 como un parámetro para trazar conseguirá interpretada por la llamada plot.window de bajo nivel y debe darle una relación de aspecto unitario. Existe la posibilidad de que una llamada usando ylim y xlim pueda entrar en conflicto con una especificación de relación de aspecto y el asp debería "prevalecer". Esa es una primera gráfica R impresionante, de lejos. Y una excelente construcción de preguntas. Notas altas.

La única nota discordante fue su uso de la construcción xlim=c(0:1.0). Como xlim espera un vector de dos elementos, habría esperado xlim = c (0,1). Menos teclas y menos sujeto a error en el futuro si cambió a un conjunto diferente de límites, ya que el operador ":" le daría resultados inesperados si lo intenta con "0: 2.5".

+0

Gracias! Sí, mi error en el uso de x y ylim de dos puntos frente a coma. Creo que tuve suerte de estar usando 0 a 1 en vez de 0 a 2.5. Todavía estoy un poco confuso acerca de la diferencia entre usar asp = 1 versus asp = TRUE. –

+1

'TRUE == 1', por lo que no hay diferencia. Pero podría usar otras relaciones de aspecto además de 1. –

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

establece el tipo de trama a ser cuadrado, lo que hará el trabajo (creo) en su caso porque su xy gamas Y son iguales. Opción escondida bastante bien documentada en? Par.

Cuestiones relacionadas