[R-es] Gráfico de Barras

Carlos Ortega cof en qualityexcellence.es
Mar Sep 6 22:47:06 CEST 2016


Hola,

En los gráficos "base", las barras se construyen repartiéndolas sobre el
eje "X". Para saber sobre qué punto cae el punto intermedio, la forma de
hacerlo es recuperando los valores del objeto "barplot" como has hecho. Y
una vez recuperados, utilizas estos puntos para pintar líneas de forma que
coincidan las "Xs" de los centros de las barras y tus "Xs" que quieres
añadir de tus puntos o líneas que vas a superponer.

Esto, aparece reflejado en la ayuda de *barplot*, lo destaco en negrita.
El epígrafe de la ayuda "Value" siempre detalla los valores que devuelve el
objeto descrito.

#--------------

*Value*

A numeric vector (or matrix, when beside = TRUE), say mp, *giving the
coordinates of all the bar midpoints drawn, useful for adding to the graph.*

If beside is true, use colMeans(mp) for the midpoints of each *group* of
bars, see example.
#--------------

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 6 de septiembre de 2016, 22:23, Mauricio Monsalvo <m.monsalvo en gmail.com>
escribió:

> Hola.
> Siguiendo a Mittal (2001); R Graph Cookbook creo haber logrado construir
> el gráfico de barras que buscada. La matriz que utilizo para el "height" va
> adjunta.
> Y mi sintaxis:
> barplot(t(barras), col=col.segmentos, border=F
>         , names.arg=Meses, las=2, cex=.75, cex.axis=0.8
>         , ylab="% del Segmento sobre el Total")
>        legend(.5, .2, ncol=5, cex=.75, bty="n" #bg="white" #, lwd=F ,
> horiz=T), pch = 15
>               , segmentos #Referencias
>               , fill = col.segmentos, border = "darkblue" ) #
>        grid(nx=NA, ny=NULL, col = "gray", lwd = 1, lty = 3) #
>        abline(v=c(12, 24, 36, 48, 60), lwd = 1, lty = 3, col = "red") #red
> para que se ven los cortes en los años
>        text(c(6, 18, 30, 42, 54), rep(.3, 5), c(2011, 2012, 2013, 2014,
> 2015))
> ​Queda bastante lindo, pero el problema lo tengo con ​abline y text, que
> quedan "desajustados" de los meses Dic de cada año, porque está mal
> indicada la referencia en c(12, 24, 36, 48, 60), a pesar de que dim(barras)
> y las categorías claramente son 67, que son las barras que contruyo.
> Luego, cuando intento entender por qué, pruebo:
> mm <- barplot(t(barras), col=col.segmentos, border=F
>         , names.arg=Meses, las=2, cex=.75, cex.axis=0.8
>         , ylab="% del Segmento sobre el Total")
> y resulta:
> > mm
>  [1]  0.7  1.9  3.1  4.3  5.5  6.7  7.9  9.1 10.3 11.5 12.7 13.9 15.1 16.3
> 17.5 18.7 19.9 21.1 22.3 23.5 24.7 25.9 27.1 28.3 29.5
> [26] 30.7 31.9 33.1 34.3 35.5 36.7 37.9 39.1 40.3 41.5 42.7 43.9 45.1 46.3
> 47.5 48.7 49.9 51.1 52.3 53.5 54.7 55.9 57.1 58.3 59.5
> [51] 60.7 61.9 63.1 64.3 65.5 66.7 67.9 69.1 70.3 71.5 72.7 73.9 75.1 76.3
> 77.5 78.7 79.9
> Lo cual parece una buena pista, pero no consigo entender qué hace... por
> qué el resultado no es 1:67? ¿Tengo que hacer algo especial para eso?
> Obvio, que ahora si utilizo:
>        abline(v=mm[c(12, 24, 36, 48, 60)], lwd = 1, lty = 3, col = "red")
> #Para los Años
>        text(mm[c(12, 24, 36, 48, 60)]-6, rep(.3, 5), c(2011, 2012, 2013,
> 2014, 2015))
> funcionaría, pero me parece poco intuitivo y además no entiendo por qué lo
> hace y me "obliga" a crear el objeto mm, en lugar de hacerlo directamente.
> Muchas gracias.
> --
> Mauricio
>
> _______________________________________________
> 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

	[[alternative HTML version deleted]]



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