Hola,

Puedes controlar con más detalle el contenido y la apariencia de la leyenda
con la función "legend()".
El problema del color asociado a los "NA" podrías más o menos arreglarlo
poniendo como color el blanco, pero vaya efectivamente no va a quedar
estéticamente demasiado bien. Tampoco he visto el detalle de si legend()
puede gestionar los NA, creo que no.

Como alternativa, que te comentaba con el paquete lattice() lo que quieres
hacer es inmediato y estéticamente creo que no está mal...:


library(lattice)

datos2<-c(12,12,39,NA,27,30,55,7,14,9,19,NA)
dispositivosn<-c("TAB","BLA","MOB",NA,"IPO","NDS","PSP","TOU","PDA","WII","ICL",NA)
n.d<-data.frame(dat=datos2, dispo=dispositivosn, gru=c(rep("Táctiles",4),
rep("Lápiz",4),rep("Otros",4)))

barchart(
         dat ~ dispo | gru, data=n.d,
         origin=0
         )

Saludos,
Carlos Ortega
www.qualityexcellence.es

2011/7/19 <ehnandez@unex.es>

> Gracias por los comentarios.
> Aquí proporciono un ejemplo simple
>
> ================================================================================
> >
> dispositivosn<-c("TAB","BLA","MOB","IPO","NDS","PSP","TOU","PDA","WII","ICL")
> > datos1<-matrix(c(12,12,39,NA,27,30,55,7,14,9,19,NA),4,3)
> > colnames(datos1)<-c("Táctiles","Lápiz","Otros")
> > barplot(datos1,col=c(1:12),ylim=c(0,100),beside=T,legend=dispositivosn)
>
> ===============================================================================
> Como puede verse en la leyenda no se corresponden los colores de relleno
> con los
> nombres de los dispositivos porque incluye el color del primer NA. Si
> modificamos
> dispositivosn a
>
>  dispositivosn<-c("TAB","BLA","MOB",NA,"IPO","NDS","PSP","TOU","PDA","WII","ICL",NA)
> entonces si se corresponden los colores con los nombres de los
> dispositivos, pero la
> leyenda queda muy fea porque incluye las clases vacias.
> Tampoco se arregla si cambiamos los NA's por ceros en los datos.
> Más todavía, si dibujamos un diagrama de barras apilado, es decir con
> beside=F,
> entonces es peor porque los colores de relleno se repiten para cada columna
> de la
> matriz de datos y el orden de los nombres de los dispositivos en la leyenda
> es
> inadecuado.
>
> Saludos.
> Emilio.
>
>
> > Hola,
> >
> > El paquete "lattice" y una de sus funciones barchart() permite hacer esto
> > que comentas de forma bastante automática (en cuanto a la gestión de los
> > grupos y el número de elementos en cada uno de ellos). Aunque su
> > parametrización es bastante diferente a la que utiliza barpplot o
> barplot2 y
> > eso te puede suponer un extra de esfuerzo.
> >
> > De todas formas si proporcionas un ejemplo reproducible o el código que
> > estás utilizando seguramente podamos ayudarte mejor.
> >
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
> >
> > 2011/7/18 <ehnandez@unex.es>
> >
> >> ¿Alguien sabe cómo dibujar un diagrama de barras agrupado (o apilado)
> con
> >> diferente
> >> número de elementos en cada grupo y que la leyenda quede "correcta"?
> >> Si utilizamos barplot (o barplot2 de gplots) podemos definir una matriz
> con
> >> columnas
> >> las diferentes alturas para cada grupo y si un grupo tiene menos
> categorias
> >> simplemente asignamos NA a los elementos sobrantes de esa columna. Pero
> no
> >> se cómo
> >> definir la leyenda para que refleje exactamente las categorías
> dibujadas.
> >> Saludos.
> >> Emilio.
> >>
> >> _______________________________________________
> >> R-help-es mailing list
> >> R-help-es@r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>
> >
>
>
>

	[[alternative HTML version deleted]]

