¿Cómo obtengo estas dos dispersiones en el mismo gráfico para comparar?

En este momento, el fragmento R que estoy usando es:

a <- read.table('A.out')
a <- cbind(1:nrow(a), a)
colnames(a) <- c('Observation','Time')

med.a <- median(a$Time)
plot(a$Observation, a$Time, xaxt="n", yaxt="n", xlab="",
     ylab="", type="b", col="red", pch=19)
abline(med.a,0, col='red', lty=2)
grid(col='darkgray', lty=1)

#Overlay Someone else
b <- read.table('B.out')
b <- cbind(1:nrow(b), b)
colnames(b) <- c('Observation','Time')

par(new=TRUE)
med.b <- median(b$Time)
plot(b$Observation, b$Time, xaxt="n", ylab="units", type="b", col="blue", pch=19)
abline(med.b,0, col='blue', lty=2)

Pero esto no tiene en cuenta las diferencias de escala. (es decir, incluso si los valores de A.out son mucho mayores que los valores de B.out, se mostrarán en la misma escala y... ¿cómo obtengo el efecto deseado para poder compararlos?)

Aquí está el contenido de mi A.out y B.out:

> a
  Observation     Time
1           1 11758000
2           2 10523000
3           3 10306000
> b
  Observation         Time
1           1 133721740000
2           2 133759475000
3           3 133724604000

preguntado el 12 de junio de 12 a las 19:06

Nuestros archivos 'A.out' y 'B.out' no son los mismos que los suyos, por lo que su código no es reproducible. ¿Podría proporcionar algunos datos que funcionen en las computadoras de otros? -

2 Respuestas

Estas llamando plot dos veces. Cada llamada establece un nuevo sistema de coordenadas. En su lugar, utilice una llamada para plot para configurar los ejes y el sistema de coordenadas, luego use lines para trazar los puntos reales:

xrange <- range(c(a$Observation, b$Observation))
yrange <- range(c(a$Time, b$Time))
plot(0, type="n", xlim=xrange, ylim=yrange)
lines(a$Observation, a$Time, type="b", col="red", pch=19)
lines(b$Observation, b$Time, type="b", col="blue", pch=19)

Desde aquí, debería poder agregar otras cosas según lo necesite, como líneas medianas, etiquetas de eje, etc.

Respondido el 12 de junio de 12 a las 20:06

Deberías agregar esto dentro ambas llamadas de la trama:

  ..., xlim=range(c( a$Observation, b$Observation )), 
       ylim= range(c( a$Time, b$Time )),  ...

Respondido el 12 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.