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]]