2011-01-03 17 views
18

estoy tratando de trazar dos círculos que se cortan no tocar, pero creo que me falta algo bastante básico ...de dibujo no se cortan círculos

jpeg(file="test.jpg") 
diam <- sqrt (2) 
plot (c(-1,1), c(1,-1), xlim=c(-5,5), ylim=c(-5,5)) 

symbols (c(-1,1), c(1,-1), circles=c(diam,diam), add=TRUE, inches=FALSE) 
dev.off() 

Puede alguien explicarme por qué estos círculos se superponen ?

alt text

Respuesta

16

ajustar el formato a través de asp:

diam <- sqrt (2) 
plot (c(-1,1), c(1,-1), xlim=c(-3,3), ylim=c(-3,3), asp=1) 
symbols (c(-1,1), c(1,-1), circles=c(diam,diam), add=TRUE, inches=FALSE) 

actualizado para añadir Gavin Simpson's excelentes puntos de vista de los comentarios y chat. Mi respuesta puede ser correcta, pero Gavin proporciona los motivos muy útiles por quéasp=1 funciona y por qué no es el comportamiento predeterminado. Muchas gracias a él.

La configuración predeterminada del dispositivo de trazado intenta mostrar los datos sin asumir nada sobre la escala de la relación entre las variables. Para citar directamente Gavin:

asp = 1 La razón no es el valor por defecto es que asp = 1 no hace sentido para datos que no comparten una unidad común de medida , como altura vs peso. ¿Por qué un cambio de de 1m de altura debe representarse como un cambio de de 1 kg de peso?

y

Como resultado, la distancia a lo largo del eje x no guarda relación con aquellos en el eje y. Como tal, lo que se traza es una transformación de círculos reales: realmente son círculos, simplemente se tradujo porque el sistema de coordenadas en el que está trazándolos no es apropiado.

Una forma de ilustrar los puntos de Gavin sería trazar los círculos en el dispositivo predeterminado (no el dispositivo jpeg), luego cambie el tamaño del dispositivo. Puedes hacer que los círculos parezcan raros.

+0

¡Muchas gracias! ¡Funciona genial! –

+0

De nada. Eché un vistazo a '? Plot' y" 'asp' la relación de aspecto y/x, mira 'plot.window' "parecía prometedor. '? plot.window' contenía los detalles. –

+0

Tienes razón, está definitivamente escrito allí. Habiendo visto el comportamiento de esta trama, creo que no estoy seguro de por qué asp = 1 no es el predeterminado. Estoy seguro de que hay una razón lógica, pero ahora esta lógica se me escapa. –

Cuestiones relacionadas