Cómo crear múltiples paneles solares con diagrama de dispersión / xyplot y objetos en tiempo POSIX?

StackOverflow https://stackoverflow.com/questions/3089424

Pregunta

Una pregunta novato. (Añadido nuevo INFO)

Tengo un conjunto de datos de marca de tiempo que se recogieron al azar. Me gusta crear una matriz de parcelas, pero no podía crear utilizando diagrama de dispersión o de objetos xyplot y hora.

mis datos

dataset$Time  #POSIX time objects (no set sampling period)
              #i built POSIX time objects by dataset$Time<-strptime(tt, "%H:%M:%OS")
              #the origial string was formated like this 12:12:12.234 (HH:MM:SS:msec)
dataset$d1, dataset$d2 #integers
dataset$d3 #factor with 10 levels

.

i puede hacer estas

plot( dataset$Time, dataset$d1)
scatterplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)

Sin embargo, no puedo hacer esto (objeto tiempo POSIX en eje x)

scatterplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)

( NUEVA INFO )

  

Error en la estructura (.internal (as.POSIXct (x, tz)), class = c ( "POSIXt", "POSIXct"),:. No válido 'x' argumento

( NUEVA INFO ), pero esto funciona (POSIX objeto vez en eje y)

xyplot(dataset$Time ~ dataset$d1 | dataset$d3, data=dataset)

relacionados, pero la pregunta es diferente hexbin. Cuando los objetos de tiempo se añaden a hexbin, la trama de la hexbin no muestra el formato de hora correcta en las unidades.

bin<-hexbin(dataset$Time, dataset$d1) 
plot(bin))

¿Qué debo hacer?

Gracias por mirar en él !!

¿Fue útil?

Solución

Este es un ejemplo de trabajo. Es posible que haya conseguido sus formatos de datos erróneos -. Uno tiene que tener cuidado con los formatos de datos precisos

En primer lugar, una trama de datos sencilla:

R> X <- data.frame(pt=Sys.Date()+0:4, x1=100+cumsum(rnorm(5)),
+                                     x2=90+cumsum(rt(5,4)))
R> X
          pt     x1    x2
1 2010-06-22  98.73 90.33
2 2010-06-23  99.43 89.56
3 2010-06-24  98.85 86.95
4 2010-06-25  99.08 88.52
5 2010-06-26 100.30 94.08
R> 

Esto se llama tan- amplia forma que celosía no utiliza. Es necesario para transformarla en formato largo. Yo uso stack() aquí, también se puede utilizar cast() y melt() de la reshape Paquete:

R> Y <- data.frame(pt=rep(X$pt,2), stack(X, select=c(x1,x2)))
R> Y
           pt values ind
1  2010-06-22  98.73  x1
2  2010-06-23  99.43  x1
3  2010-06-24  98.85  x1
4  2010-06-25  99.08  x1
5  2010-06-26 100.30  x1
6  2010-06-22  90.33  x2
7  2010-06-23  89.56  x2
8  2010-06-24  86.95  x2
9  2010-06-25  88.52  x2
10 2010-06-26  94.08  x2
R> 

Ahora la llamada xyplot es simplemente:

R> xyplot(values ~ pt | ind, data=Y, panel=panel.lines)

y se puede, por supuesto, el uso mucho más complicado expresiones acondicionado.

Otros consejos

Al parecer R tiene algún problema de tratar con la adicción de veces POSIX ... me da el error:

  

Error en +.POSIXt (x [piso (d)], x [techo (d)]): binario '+' no está definido para "POSIXt" objetos

acaba de fundir a numérico y debería funcionar. Puede ocultar el eje correspondiente y volver a dibujar más tarde con las fechas correctas

por ejemplo:.

scatterplot(dataset$d1 ~ as.numeric(dataset$Time) | dataset$d3, data=dataset, xaxt="n")
axis(1, at=as.numeric(dataset$Time), labels=dataset$Time, cex.axis=0.5)

Para mí simplemente funciona, por lo que probablemente tiene un vector de tiempo en un formato incorrecto. ¿Qué se obtiene cuando se llama class(dataset$Time)? Debe contener "POSIXct" para que esto funcione.

Por otra parte, no es necesario poner en la fórmula dataset$ si se suministra data=dataset.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top