luc.bianchi
2013-Feb-05 03:28 UTC
[R-es] Problemas para dibujar barras de error teniendo fechas sobre el eje X......editado
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. 5- Como vi en correos anteriores que el paquete zoo tambien se puede usar para graficar fechas, intente buscar alguna solucion por ese lado, pero no tuve suerte. 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]]
Carlos Ortega
2013-Feb-05 09:28 UTC
[R-es] Problemas para dibujar barras de error teniendo fechas sobre el eje X......editado
Hola Lucas, Me sonaba que de este tema habíamos hablado hace un tiempo, o al menos un problema parecido. En julio de 2010 planteaste una pregunta equivalente (¿idéntica?) y al final tú mismo planteaste la solución... Me parece que el problema que planteas es muy parecido a aquel otro... http://thr3ads.net/r-help-es/2010/07/1155952-Problemas-para-graficar-barras-de-error-y-fechas-en-el-eje-x-SOLUCIONADO Saludos, Carlos Ortega www.qualityexcellence.es El 5 de febrero de 2013 04:28, luc.bianchi <luc.bianchi@zoho.com> escribió:> 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. > > 5- Como vi en correos anteriores que el paquete zoo tambien se puede usar > para graficar fechas, intente buscar alguna solucion por ese lado, pero no > tuve suerte. > > 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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]