[R-es] Etiquetas de los ejes

guivivi en alumni.uv.es guivivi en alumni.uv.es
Lun Ene 24 10:02:06 CET 2011


Buenos días Carlos,

Anoche formulé mal la pregunta, de hecho, de camino hoy al trabajo venía
pensando que lo tenía que haber explicado mejor, lo que quería decir es
exactamente lo que tú me comentas, que el espacio entre la esquina
inferior y la primera marca y el espacio entre la esquina superior y la
última marca no era el mismo y buscaba cómo corregirlo.

Con todo lo que me has sugerido, he conseguido una mejora en la creación
de los gráficos, he añadido además el parámetro cex.axis para disminuir
el tamaño de las etiquetas y que me salieran de este modo todos los
"ticks" etiquetados.

Copio el código para quien le pueda ser de utilidad.

datos <- airquality
attach(datos)

 par(mfrow = c(2,2))
 ylab <- c("Concentracion media de ozono (ppb)", "Radiacion solar
(Langleys)", "Velocidad del viento (mph)", "Temperatura (grados F)")

 #Obtengo los extremos de las columnas de cara al etiquetado del eje y:
 e <- list()
 for(i in 1:4){
 e[[i]] <- c(round(min(datos[,i], na.rm=T)), round(max(datos[,i],
  na.rm=T)))
 e[[i]] <- round(e[[i]] / 5) * 5
 }

 #Estos números me sirven para equiespaciar las etiquetas:
 d <- c(34,66,2,9)

 #Represento los gráficos:
 for(i in 1:4){
 plot(datos[,i], ylab=ylab[i], xlab="Dias", yaxt="n", type = "n",las=2,
cex.axis=0.7)
 axis(2, at = seq(floor(0.925*e[[i]][1]), e[[i]][2],d[i]), 
 labels = seq(floor(0.925*e[[i]][1]), e[[i]][2],d[i]),cex.axis=0.7)
 lines(datos[,i], col=i+1)
 }

##########

Muchas gracias Carlos por tu ayuda.

Un saludo y feliz día.

Guillermo


> Hola,
> 
> Los intervalos claro que están equiespaciados. En "d[i]" indicas el valor
> del salto de cada marca.
> Lo que entiendo de lo que comentas es que en los gráficos inferiores, el
> espacio entre la la esquina inferior del eje y la primera marca, o la
> esquina superior y la última marca no es la misma.
> 
> La corrección que se me ocurre, para el tercer gráfico es justamente en el
> espaciado "d[i]" que has utilizado.
> Si para los dos últimos gráficos utilizas un espaciado diferente, por
> ejemplo d[3]<-2 en vez del valor 5 que has utilizado la "impresión" esa
> diferencia no existe o es mínima.
> 
> Y para el último gráfico, la forma que he visto de centrarlo más es
> eligiendo un punto de arranque para el emplazamiento de las etiquetas
> diferente al "e[[i]][1]", si utilizas por ejemplo "0.925*e[[i]][1]", queda
> bastante centrado.
> 
> Otro elemento de mejora que podrías introducir, puestos a esto de la
> estética gráfica, es el de colocar las marcas del eje-y de forma
> perpendicular "las=2".
> 
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
> www.datanalytics.com/blog
> 
> 2011/1/23 <guivivi en alumni.uv.es>
> 
> > Hola a todos,
> >
> > Estoy tratando de generar un line plot para las cuatro primeras columnas
> > del banco de datos airquality del paquete datasets.
> >
> > Siempre que genero gráficos, personalizo las etiquetas de los ejes
> > mediante la función axis para que me queden equiespaciadas.
> >
> > En este caso, los gráficos los represento todos en un mismo dispositivo
> > mediante un bucle for, en el que en cada iteración dibujo las etiquetas
> > con la función axis().
> >
> > Este es el código que he escrito:
> >
> > datos <- airquality
> > attach(datos)
> >
> > par(mfrow = c(2,2))
> > ylab <- c("Concentracion media de ozono (ppb)", "Radiacion solar
> > (Langleys)", "Velocidad del viento (mph)", "Temperatura (grados F)")
> >
> > #Obtengo los extremos de las columnas de cara al etiquetado del eje y:
> > e <- list()
> > for(i in 1:4){
> > e[[i]] <- c(round(min(datos[,i], na.rm=T)), round(max(datos[,i],
> >  na.rm=T)))
> > e[[i]] <- round(e[[i]] / 5) * 5
> > }
> >
> > #Estos números me sirven para equiespaciar las etiquetas:
> > d <- c(34,66,5,10)
> >
> > #Represento los gráficos:
> > for(i in 1:4){
> > plot(datos[,i], ylab=ylab[i], yaxt="n", type = "n")
> > axis(2, at = seq(e[[i]][1], e[[i]][2],d[i]), labels = seq(e[[i]][1],
> > e[[i]][2],d[i]))
> > lines(datos[,i], col=i+1)
> > }
> >
> > Adjunto en el pdf los gráficos que genero.
> >
> > El problema que tengo es que los gráficos de la parte superior sí me
> > aparecen las etiquetas del eje y equiespaciadas, pero los de la
> > parte inferior no.
> >
> > ¿Alguien puede darme alguna explicación?.
> >
> > He leído ?axis, ?par, etcétera, pero no logro averiguar nada.
> >
> > Sería de mucha ayuda cualquier sugerencia.
> >
> > Muchas gracias de antemano.
> >
> > Un saludo,
> >
> > Guillermo
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >
> 



Más información sobre la lista de distribución R-help-es