Carlos Fernández-Delgado
2014-Sep-08 19:12 UTC
[R-es] problema con los cambios de marcas temporales en el eje X
Hola de nuevo, acabo de encontrar la solución. He creado una variable ficticia con los días 1 de cada mes en la secuencia temporal que quería y después he actuado de la siguiente manera attach(Libro1) plot (xbar~as.Date(fecha,"%d/%m/%y"), type="b", pch=19,cex=2,xaxt="n") xlabels<-strptime(ofeje, format = "%d/%m/%y") axis.Date(1, at=xlabels[xlabels$mday==1], format="%b-%y") El resultado se plasma en la grafica adjunta, por si alguien está interesado también envío la base de datos con la variable ficticia. Muchas gracias y disculpas por las molestias. Un cordial saludo. Carlos El 08/09/2014, a las 00:05, Carlos Ortega <cof en qualityexcellence.es> escribió: Hola, Una forma de hacerlo es: 1. incluyes un parámetro en "plot(..., axes=F)" y así indicas que no quieres pintar automáticamente los ejes. 2. Y ahora construyes el eje "x" con la función "axis()". 3. Dentro de axis(), dirás cada cuánto quieres pintar una marca (parámetro "at") y qué quieres incluir en la marca (parámetro "label"). Para ver un ejemplo, mira el ejemplo que aparece en la ayuda de la función "axis()". Saludos, Carlos Ortega www.qualityexcellence.es El 7 de septiembre de 2014, 20:46, Carlos Fernández-Delgado <ba1fedec en uco.es> escribió: Estimada Comunidad, solicito vuestra ayuda en un tema quizás un poco tonto, pero no logro dar con la tecla. Estoy intentando hacer una gráfica de la evolución temporal de una variable (xbar) a lo largo del tiempo. La secuencia que he hecho es la siguiente: attach(Libro1) plot (xbar~as.Date(fechas,"%d/%m/%y"), ylim=c(400,650), type="b", pch=19,cex=1) arrows(x0=as.Date(fechas,"%d/%m/%y"),y0=lci,x1=as.Date(fechas,"%d/%m/%y"),y1=lcs,angle=90,code=3,length=.1) El problema es que la gráfica emitida por R me saca en abscisas una serie de meses que me los coloca por defecto (ver gráfica adjunta) y lo que yo quiero es poner marcas mensuales desde agosto de 2013 hasta mayo 2014, incluido el cambio de año (ya sea dic?13 o ene?14), pero por mucho que lo intento no me sale. ¿Podéis ayudarme?. Muchas gracias por adelantado y un cordial saludo Carlos _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es -- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140908/4c58f3f9/attachment-0003.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: Libro1.csv Type: text/csv Size: 1880 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140908/4c58f3f9/attachment-0001.bin> ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140908/4c58f3f9/attachment-0004.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: Rplot.jpeg Type: image/jpeg Size: 64136 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140908/4c58f3f9/attachment-0001.jpeg> ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140908/4c58f3f9/attachment-0005.html>
daniel
2014-Sep-08 20:29 UTC
[R-es] problema con los cambios de marcas temporales en el eje X
Disculpas por ingresar tarde en este debate. Si te entiendo bien mi solución sería usar el paquete zoo: library(zoo) datIn <- read.csv2("Libro1.csv") datIn <- zoo(datIn[,-1], order.by=as.Date(datIn$fecha, format="%d/%m/%y")) plot (datIn$xbar ,ylim=c(400,660), type="b", pch=19,cex=1) axis(2) box() arrows( x0=index(datIn),y0=datIn$lci ,x1=index(datIn),y1=datIn$lcs ,angle=90,code=3,length=.1 ) Suerte, Daniel Merino El 8 de septiembre de 2014, 16:12, Carlos Fernández-Delgado <ba1fedec en uco.es> escribió:> Hola de nuevo, acabo de encontrar la solución. He creado una variable > ficticia con los días 1 de cada mes en la secuencia temporal que quería y > después he actuado de la siguiente manera > > attach(Libro1) > plot (xbar~as.Date(fecha,"%d/%m/%y"), type="b", pch=19,cex=2,xaxt="n") > xlabels<-strptime(ofeje, format = "%d/%m/%y") > axis.Date(1, at=xlabels[xlabels$mday==1], format="%b-%y") > > > El resultado se plasma en la grafica adjunta, por si alguien está > interesado también envío la base de datos con la variable ficticia. Muchas > gracias y disculpas por las molestias. > Un cordial saludo. > Carlos > > > El 08/09/2014, a las 00:05, Carlos Ortega <cof en qualityexcellence.es> > escribió: > > Hola, > > Una forma de hacerlo es: > 1. incluyes un parámetro en "plot(..., axes=F)" y así indicas que no > quieres pintar automáticamente los ejes. > 2. Y ahora construyes el eje "x" con la función "axis()". > 3. Dentro de axis(), dirás cada cuánto quieres pintar una marca (parámetro > "at") y qué quieres incluir en la marca (parámetro "label"). > > Para ver un ejemplo, mira el ejemplo que aparece en la ayuda de la función > "axis()". > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 7 de septiembre de 2014, 20:46, Carlos Fernández-Delgado < > ba1fedec en uco.es> escribió: > >> Estimada Comunidad, solicito vuestra ayuda en un tema quizás un poco >> tonto, pero no logro dar con la tecla. >> Estoy intentando hacer una gráfica de la evolución temporal de una >> variable (xbar) a lo largo del tiempo. >> La secuencia que he hecho es la siguiente: >> attach(Libro1) >> plot (xbar~as.Date(fechas,"%d/%m/%y"), ylim=c(400,650), type="b", >> pch=19,cex=1) >> >> arrows(x0=as.Date(fechas,"%d/%m/%y"),y0=lci,x1=as.Date(fechas,"%d/%m/%y"),y1=lcs,angle=90,code=3,length=.1) >> >> El problema es que la gráfica emitida por R me saca en abscisas una serie >> de meses que me los coloca por defecto (ver gráfica adjunta) y lo que yo >> quiero es poner marcas mensuales desde agosto de 2013 hasta mayo 2014, >> incluido el cambio de año (ya sea dic?13 o ene?14), pero por mucho que lo >> intento no me sale. >> >> ¿Podéis ayudarme?. >> Muchas gracias por adelantado y un cordial saludo >> >> Carlos >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Daniel [[alternative HTML version deleted]]
Carlos Ortega
2014-Sep-08 22:08 UTC
[R-es] problema con los cambios de marcas temporales en el eje X
Hola, He buscado una solución a partir de los datos originales. La alternativa de introducir una serie adicional con el primer día del mes sobre el data.frame original, tiene el problema que en la serie original las fechas no coinciden con esos primeros días del mes. Aunque hay que darle unas cuantas vueltas para construir las etiquetas de los ejes, evitando la repetición del mes o del año, al final creo que queda como querías... #--------------------------- datIn <- read.csv("Libro1.csv", header=T, sep=";", dec=",") library(lubridate) datIn$xlabels <- as.Date(dmy(datIn$fecha), format="%Y-%m-%d") datIn$mes <- month(dmy(datIn$fecha), label=T, abbr=T) datIn$anio <- year(dmy(datIn$fecha)) datIn$mesanio <- paste(datIn$mes,"-",datIn$anio,sep="") for(i in 1:length(datIn$mes)) { if(i>1) { if(datIn$mes[i]==datIn$mes[i-1]) { datIn$mesx[i] <- c("") } else { mestmp <- as.character(datIn$mes[i]) datIn$mesx[i] <-mestmp } } else { datIn$mesx[i] <- as.character(datIn$mes[i]) } } for(i in 1:length(datIn$anio)) { if(i>1) { if(datIn$anio[i]==datIn$anio[i-1]) { datIn$aniox[i] <- c("") } else { aniotmp <- datIn$anio[i] datIn$aniox[i] <-aniotmp } } else { datIn$aniox[i] <- datIn$anio[i] } } for(i in 1:length(datIn$mesx)) { if(nchar(datIn$mesx[i])>0 & nchar(datIn$aniox[i])>0 ) { datIn$labx[i] <- paste(datIn$mesx[i],"-",datIn$aniox[i], sep="") } if(nchar(datIn$mesx[i])>0 & nchar(datIn$aniox[i])==0) { datIn$labx[i] <- datIn$mesx[i] } if(nchar(datIn$mesx[i])==0 & nchar(datIn$aniox[i])==0) { datIn$labx[i] <- c('') } } plot ( datIn$xbar ~ datIn$xlabels ,ylim=c(400,660), xaxt="n", type="b", pch=19,cex=1, ,xlab="Fecha", ylab="Value" ,axes=F ) axis.Date( 1,at=datIn$xlabels[nchar(datIn$labx)>0],format="%b-%y" ,labels=datIn$labx[nchar(datIn$labx)>0] ,las=1, cex.axis=0.8, col.axis="blue", font.axis=2 ) axis(2, col.axis="blue", las=1, font.axis=2) box() arrows( x0=datIn$xlabels,y0=datIn$lci ,x1=datIn$xlabels,y1=datIn$lcs ,angle=90,code=3,length=.1 ) #----------------------- [image: Imágenes integradas 1] El 8 de septiembre de 2014, 21:12, Carlos Fernández-Delgado <ba1fedec en uco.es> escribió:> Hola de nuevo, acabo de encontrar la solución. He creado una variable > ficticia con los días 1 de cada mes en la secuencia temporal que quería y > después he actuado de la siguiente manera > > attach(Libro1) > plot (xbar~as.Date(fecha,"%d/%m/%y"), type="b", pch=19,cex=2,xaxt="n") > xlabels<-strptime(ofeje, format = "%d/%m/%y") > axis.Date(1, at=xlabels[xlabels$mday==1], format="%b-%y") > > > El resultado se plasma en la grafica adjunta, por si alguien está > interesado también envío la base de datos con la variable ficticia. Muchas > gracias y disculpas por las molestias. > Un cordial saludo. > Carlos > > > El 08/09/2014, a las 00:05, Carlos Ortega <cof en qualityexcellence.es> > escribió: > > Hola, > > Una forma de hacerlo es: > 1. incluyes un parámetro en "plot(..., axes=F)" y así indicas que no > quieres pintar automáticamente los ejes. > 2. Y ahora construyes el eje "x" con la función "axis()". > 3. Dentro de axis(), dirás cada cuánto quieres pintar una marca (parámetro > "at") y qué quieres incluir en la marca (parámetro "label"). > > Para ver un ejemplo, mira el ejemplo que aparece en la ayuda de la función > "axis()". > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 7 de septiembre de 2014, 20:46, Carlos Fernández-Delgado < > ba1fedec en uco.es> escribió: > >> Estimada Comunidad, solicito vuestra ayuda en un tema quizás un poco >> tonto, pero no logro dar con la tecla. >> Estoy intentando hacer una gráfica de la evolución temporal de una >> variable (xbar) a lo largo del tiempo. >> La secuencia que he hecho es la siguiente: >> attach(Libro1) >> plot (xbar~as.Date(fechas,"%d/%m/%y"), ylim=c(400,650), type="b", >> pch=19,cex=1) >> >> arrows(x0=as.Date(fechas,"%d/%m/%y"),y0=lci,x1=as.Date(fechas,"%d/%m/%y"),y1=lcs,angle=90,code=3,length=.1) >> >> El problema es que la gráfica emitida por R me saca en abscisas una serie >> de meses que me los coloca por defecto (ver gráfica adjunta) y lo que yo >> quiero es poner marcas mensuales desde agosto de 2013 hasta mayo 2014, >> incluido el cambio de año (ya sea dic?13 o ene?14), pero por mucho que lo >> intento no me sale. >> >> ¿Podéis ayudarme?. >> Muchas gracias por adelantado y un cordial saludo >> >> Carlos >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > >-- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140909/048a578c/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: Rplot02.png Type: image/png Size: 41265 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20140909/048a578c/attachment-0001.png>
daniel
2014-Sep-09 18:11 UTC
[R-es] problema con los cambios de marcas temporales en el eje X
Espero ahora haber interpretado mejor lo que pretendes: library(zoo) datIn <- read.csv2("D:/L01359/Mis documentos/Downloads/Libro1.csv") datIn <- zoo(datIn[,-1], order.by=as.Date(datIn$fecha, format="%d/%m/%y")) ticks <- seq(as.Date("2013-07-01"), length=11, by="1 month") - 1 # genero una secuencia de fines de més plot (datIn$xbar, ylim=c(400,660), type="b", pch=19,cex=1, xaxt = "n" ) # con xaxt = n elimino los labels originales del eje x axis(1, at=ticks, labels = format(ticks, "%b-%y"), cex.axis=0.7) # doy los nuevos valores de los ticks con su formato y un tamaño que permita en la mayoría de los casos ver todos los meses box() arrows( x0=index(datIn),y0=datIn$lci ,x1=index(datIn),y1=datIn$lcs ,angle=90,code=3,length=.1 ) Saludos, Daniel Merino El 8 de septiembre de 2014, 17:29, daniel <daniel319 en gmail.com> escribió:> Disculpas por ingresar tarde en este debate. Si te entiendo bien mi > solución sería usar el paquete zoo: > > library(zoo) > datIn <- read.csv2("Libro1.csv") > datIn <- zoo(datIn[,-1], order.by=as.Date(datIn$fecha, format="%d/%m/%y")) > plot (datIn$xbar ,ylim=c(400,660), type="b", pch=19,cex=1) > axis(2) > box() > arrows( x0=index(datIn),y0=datIn$lci > ,x1=index(datIn),y1=datIn$lcs > ,angle=90,code=3,length=.1 ) > > Suerte, > > Daniel Merino > > > > > > El 8 de septiembre de 2014, 16:12, Carlos Fernández-Delgado < > ba1fedec en uco.es> escribió: > > Hola de nuevo, acabo de encontrar la solución. He creado una variable >> ficticia con los días 1 de cada mes en la secuencia temporal que quería y >> después he actuado de la siguiente manera >> >> attach(Libro1) >> plot (xbar~as.Date(fecha,"%d/%m/%y"), type="b", pch=19,cex=2,xaxt="n") >> xlabels<-strptime(ofeje, format = "%d/%m/%y") >> axis.Date(1, at=xlabels[xlabels$mday==1], format="%b-%y") >> >> >> El resultado se plasma en la grafica adjunta, por si alguien está >> interesado también envío la base de datos con la variable ficticia. Muchas >> gracias y disculpas por las molestias. >> Un cordial saludo. >> Carlos >> >> >> El 08/09/2014, a las 00:05, Carlos Ortega <cof en qualityexcellence.es> >> escribió: >> >> Hola, >> >> Una forma de hacerlo es: >> 1. incluyes un parámetro en "plot(..., axes=F)" y así indicas que no >> quieres pintar automáticamente los ejes. >> 2. Y ahora construyes el eje "x" con la función "axis()". >> 3. Dentro de axis(), dirás cada cuánto quieres pintar una marca >> (parámetro "at") y qué quieres incluir en la marca (parámetro "label"). >> >> Para ver un ejemplo, mira el ejemplo que aparece en la ayuda de la >> función "axis()". >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> El 7 de septiembre de 2014, 20:46, Carlos Fernández-Delgado < >> ba1fedec en uco.es> escribió: >> >>> Estimada Comunidad, solicito vuestra ayuda en un tema quizás un poco >>> tonto, pero no logro dar con la tecla. >>> Estoy intentando hacer una gráfica de la evolución temporal de una >>> variable (xbar) a lo largo del tiempo. >>> La secuencia que he hecho es la siguiente: >>> attach(Libro1) >>> plot (xbar~as.Date(fechas,"%d/%m/%y"), ylim=c(400,650), type="b", >>> pch=19,cex=1) >>> >>> arrows(x0=as.Date(fechas,"%d/%m/%y"),y0=lci,x1=as.Date(fechas,"%d/%m/%y"),y1=lcs,angle=90,code=3,length=.1) >>> >>> El problema es que la gráfica emitida por R me saca en abscisas una >>> serie de meses que me los coloca por defecto (ver gráfica adjunta) y lo que >>> yo quiero es poner marcas mensuales desde agosto de 2013 hasta mayo 2014, >>> incluido el cambio de año (ya sea dic?13 o ene?14), pero por mucho que lo >>> intento no me sale. >>> >>> ¿Podéis ayudarme?. >>> Muchas gracias por adelantado y un cordial saludo >>> >>> Carlos >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es en r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Daniel >-- Daniel [[alternative HTML version deleted]]