Skip to content

[R-es] barplot

3 messages · guivivi en alumni.uv.es, Olivier Nuñez

#
Hola,

Un barplot de una matriz con 10 columnas y 6 filas tiene 10 barras (una 
por columna) y cada barra dividida en seis sub-barras (una por fila).

Mi pregunta es como unir mediante una recta los puntos medios de la 
misma subarra para las 10 barras.

Sé que con:

datos <- c(1,4,6,3,0.5)
bar <- barplot(vect)
lines(bar,vect) 

puedo conectar los puntos medios de cada barra, pero ¿cómo podría 
hacerlo si la variable datos en lugar de ser un vector fuera una 
matriz?.

Espero que alguien me pueda echar una mano.

Muchas gracias de antemano. 

Un saludo,

Guillermo
#
iulstrando con los datos HairEyeColor

data(HairEyeColor)
datos=HairEyeColor[,,"Male"]
bar=barplot(datos,beside=TRUE)
for(i in 1:dim(datos)[1]) lines(bar[,i],datos[,i])

--   
____________________________________

Olivier G. Nuñez
Email: onunez en iberstat.es
Tel : +34 663 03 69 09
Web: http://www.iberstat.es

____________________________________




El 23/02/2010, a las 15:36, <guivivi en alumni.uv.es>  
<guivivi en alumni.uv.es> escribió:
#
Muchas gracias por tu respuesta, Olivier.

Por mi parte, he logrado hacer lo que necesitaba y para quien le pueda 
interesar, transcribo el razonamiento que he hecho y la plasmación en R 
del mismo:

Para unir los mismos estados de sueño para cada percentil,hay que 
localizar la ordenada de cada sub-barra.
Cada barra del diagrama se corresponde con una columna de la matriz mat 
y cada sub-barra,con una fila de esa columna.
Entonces para unir los estados de sueño hay que localizar la ordenada 
de cada sub-barra para cada barra,teniendo en cuenta lo siguiente:
La ordenada de cada sub-barra es la suma del elemento de la fila de la 
columna correspondiente a esa barra más los elementos de las filas 
anteriores.  
Las siguientes líneas plasman en código este razonamiento: 
(bar es el barplot de la matriz mat: bar<-barplot(mat))


#Definir un vector de vector de vectores cuyo primer elemento sea la 
#primera fila de la matriz mat:
lista <- vector("list",1)
lista[[1]] <- mat[1,]

#Cada elemento de la lista será la suma de la fila de mat 
#correspondiente a ese elemento más las anteriores filas.
for(p in 1:5){
 lista[[p+1]] = mat[p+1,] + lista[[p]]
}

#Unir los puntos medios de los mismos estados de sueño de todos los 
percentiles: 
for(q in 1:6){
lines(bar,lista[[q]])
}

Un saludo,

Guillermo
fila).