luc.bianchi
2013-Feb-05 03:20 UTC
[R-es] Problemas para dibujar barras de error teniendo fechas sobre el eje X
Hola: les escribo para ver si me pueden ayudar con el siguiente problemita. Tengo unos gráficos que tienen en el eje X, unas fechas y quisiera agregarle a los puntos una línea o barra indicando el desvío standard, pues cada uno de los puntos que le corresponde a cada fecha es el resultado de un promedio. Hasta ahora los gráficos los hacía con el siguiente código: # defino los límites del eje x ejex <- strptime(c("01/11/2009","15/4/2010"), "%d/%m/%Y") # transformo los datos correspondientes a las X a tipo fecha x <- strptime(datos$fecha, "%e/%m/%Y") # datos del eje y y <- datos.1$prom # dibujo un gráfico en blanco plot(ejex, c(0,120), pch=16, axes=F, ylim=c(0,120), xlab="", ylab="", type="n") # agrego el eje y axis(2, ylim=c(0,120),col="black",cex.axis=1.6, lwd=3) # y agrego el eje x axis.POSIXct(1,at=seq.POSIXt(from=ejex[1], to=ejex[2], by="months"), format="%b", pos=0, cex.axis=1.6, lwd=3) # finalmente agrego los puntos points(x,y, pch=19, col="blue", cex=2) Hasta ahí funciona perfecto, el código tiene algunas cosas más, pero puse lo que creo resulta pertinente para mi problema. Probé algunas cosas: 1- con las funciones errbar(), segments() y arrows(), por ejemplo: segments(x,y+error, x,y-error) con cualquiera de las tres, obtengo el error "primer argumento inválido" supongo que porque no es un número. 2- encontré un ejemplo muy parecido al mío en: http://www.r-bloggers.com/plotting-grouped-data-vs-time-with-error-bars-in-r-2/ pero evidentemente hay algo que me estoy perdiendo, porque en este ejemplo sí logra dibujar las barras usando arrows(), cosa que yo no pude. 3- intenté con plotCI(): library(plotrix) plotCI(x,y,uiw=error) ante lo cual obtengo el mensaje: "both x and y NULL", no entiendo porqué, ya que x e y no son nulos pues en la línea anterior los usé para dibujar los puntos sobre el gráfico. 4- con ggplot() parece que se puede: http://grokbase.com/t/r/r-help/1163g3syze/r-y-error-bars-dates-on-the-x-axis Intenté hacerlo con mis datos, pero al graficar las fechas con ggplot() trata los valores como factores y dibuja todos los puntos equidistantes. Mis datos no son equidistantes en el tiempo. Tal vez si me ayudaran a lograr eso, podría ser una solución. De todos modos por el momento preferiría solucionarlo sin tener que meterme a aprender cómo usar ggplot(), aunque sé que en algún momento deberé hacerlo. No se me ocurre qué más intentar, espero que me puedan ayudar. Desde ya, les doy mis gracias. Saludos, Lucas. [[alternative HTML version deleted]]