[R-es] Gráfico von varias variables

Mauricio Monsalvo m.monsalvo en gmail.com
Mie Oct 31 23:50:04 CET 2012


Hola de nuevo:
Un problema más que no logro saldar... Las líneas del primer y segundo eje
dibujan sus "puntos" en un lugar raro, sospechoso... como si estuviera
levemente corrido en relación al lugar que esperaba (la mitad de las
barras).- No se si se alcanza a ver en el adjunto. Las primeras están más
hacia la izquierda, los últimos más hacia la derecha. Probé eliminando los
NA (caps <- na.omit(caps)) como para ver si el problema era la diferencia
en la cantidad de observaciones, pero no lo resolvió.
Claro que puedo eliminar los puntos, pero en ese caso pierdo análisis
gráfico y puede que esté ocultando algún error.
Creo que si logro ajustar este gráfico, lo patento!!
Saludos.
Mauricio.


El 31 de octubre de 2012 11:30, Mauricio Monsalvo
<m.monsalvo en gmail.com>escribió:

> **
> Elemental...
> Gracias de nuevo.
> Mauricio
> ------------------------------
> *From: * Carlos Ortega <cof en qualityexcellence.es>
> *Date: *Wed, 31 Oct 2012 15:21:43 +0100
> *To: *Mauricio Monsalvo<m.monsalvo en gmail.com>
> *Cc: *r-help-es<r-help-es en r-project.org>
> *Subject: *Re: [R-es] Gráfico von varias variables
>
> Hola,
>
> Para ordenar todo por la columna "Con12Meses" se puede hacer ordenando
> inicialmente el data.frame "caps" y luego ya generar todos los gráficos.
> Adjunto el código. Tan sólo cambia una línea (la destaco en rojo):
>
>
> ##############################################
> *#ordeno por columna "Con12Meses"*
> *caps <- caps[order(caps$Con12Meses, decreasing=T),]*
>
> par(mar=c(4,4,4,4),            #
>     omi=c(0.1,0.1,0.1,0.1),    #
>     las=1,                     #
>     mex=0.5,                   #
>     cex.lab = 1,               #
>     cex.axis=0.7)              # el tamaño de las leyendas
> barplot(
>         caps$personas,
>         names.ar=caps$CAPS,
>         col="blue", border=F, space=.01, axes=F, ylim=c(0,
> 1.20*max(caps$personas))
>         )
> axis(2, col.axis="blue")
> #par(new=T)
> # crea la barra de caps$PersonasRCGV, pero cambia los ejes porque el
> resultado gráfico no es
> # coherente con los valores (caps$PersonasRCVG siempre es un valor menor
> que caps$personas...)
> barplot(caps$PersonasRCVG, axes=F, ann=F,
>         col="grey", border=F, space=.01, add=T)
> par(new=T)
> plot(caps$Con12Meses, axes=F, ann=F, type="n")
> points(caps$Con12Meses,type="l",col="black")       # Crea la línea
> paracaps$Con12Meses (por la cual quiero ordenar)
> points(caps$Con12Meses,  pch=16, col="black")      # agrega puntos negros
> rellenos a la línea
> par(new=T)
> plot(caps$prevalencia, axes=F, ann=F, type="n")
> axis(4, col.axis="tomato", col.lab="black" )                         #
> Crea el eje secundario
> #points(caps$prevalencia,type="l",col="red")       # Crea la línea sobre
> el eje secundario
> #points(caps$prevalencia,  pch=16, col="red")      # agrega puntos rojos
> rellenos a la línea
> points(caps$prevalencia,  type="b", pch=16, col="red")
> text(caps$prevalencia, labels=paste(caps$prevalencia), pos=3, col="red", )
> # si se quiere poner la prevalencia en el gráfico.
> box()
>  ######################### FIN ######################
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 31 de octubre de 2012 14:53, Mauricio Monsalvo <m.monsalvo en gmail.com>escribió:
>
>> Muchas gracias a todos!
>> Todas las soluciones me resultaron útiles. Comparto que la clave era el
>> add=T para la segunda barra. Me quedó pendiente ordenar el gráfico por la
>> línea de Con12Meses (que va sobre el primer eje) y ahora noto que me faltan
>> las referencias. ¿Es lo mismo que ponerlas en uno? ¿Pero en cuál?
>> Mauricio
>>
>>
>>
>> El 31 de octubre de 2012 06:52, Carlos Ortega <cof en qualityexcellence.es>escribió:
>>
>> Hola,
>>>
>>> Incluyo todo el código destacando algunas mejoras que creo que añaden
>>> coherencia a lo que se representa en cada eje, además de alguna mejora
>>> estética.
>>>
>>> ########################################################
>>> par(*mar=c(4,4,4,4)*,            #
>>>      omi=c(0.1,0.1,0.1,0.1),    #
>>>     las=1,                     #
>>>     mex=0.5,                   #
>>>     cex.lab = 1,               #
>>>     cex.axis=0.7)              # el tamaño de las leyendas
>>>
>>> ########################
>>> # Barplots - Eje Primario
>>> barplot(
>>>         caps$personas,
>>>         names.ar=caps$CAPS,
>>>         col="blue", border=F, space=.01,* axes=F, ylim=c(0,
>>> 1.20*max(caps$personas)*)
>>>         )
>>> *axis(2, col.axis="blue") # Separo el eje para darle color azul como el
>>> del barplot.1*
>>> *#*par(new=T)
>>>
>>> # crea la barra de caps$PersonasRCGV, pero cambia los ejes porque el
>>> resultado gráfico no es
>>> # coherente con los valores (caps$PersonasRCVG siempre es un valor menor
>>> que caps$personas...)
>>> barplot(caps$PersonasRCVG, axes=F, ann=F,
>>>          col="grey", border=F, space=.01, *add=T)*
>>>
>>> #######################
>>> # Líneas - Eje Secundario
>>> par(new=T)
>>> plot(caps$Con12Meses, axes=F, ann=F, type="n")
>>> *#*points(caps$Con12Meses,type="l",col="black")       # Crea la línea
>>> paracaps$Con12Meses (por la cual quiero ordenar)
>>> *#*points(caps$Con12Meses,  pch=16, col="black")*  *    # agrega puntos
>>> negros rellenos a la línea
>>> *points(caps$Con12Meses,  pch=16, col="black")  # Los dos pasos
>>> anteriores los puedo hacer en uno.*
>>> par(new=T)
>>> plot(caps$prevalencia, axes=F, ann=F, type="n")
>>> *axis(4, col.axis="tomato", col.lab="black" )   *
>>> # Crea el eje secundario  *y le doy color rojo como una de las líneas. *
>>> *#*points(caps$prevalencia,type="l",col="red")       # Crea la línea
>>> sobre el eje secundario
>>> #points(caps$prevalencia,  pch=16, col="red")      # agrega puntos
>>> rojos rellenos a la línea
>>> *points(caps$prevalencia,  type="b", pch=16, col="red") **# Los dos
>>> pasos anteriores los puedo hacer en uno.*
>>>  text(caps$prevalencia, labels=paste(caps$prevalencia), pos=3,
>>> col="red", )
>>> # si se quiere poner la prevalencia en el gráfico.
>>> *box()*
>>>
>>> ########################################################
>>>
>>>
>>> Saludos,
>>> Carlos Ortega
>>> www.qualityexcellence.es
>>>
>>> El 31 de octubre de 2012 10:24, Xavi de Blas <xaviblas en gmail.com>escribió:
>>>
>>> Perdón por el autobombo pero aquí tengo un gráfico con 4 variables que
>>>> me satisface:
>>>>
>>>> http://chronojump.org/server/images/tf_by_level_sex_jumptype.png
>>>>
>>>> el código está aquí:
>>>>
>>>>
>>>> http://git.gnome.org/browse/chronojump/tree/chronojump_server/r-sqlite/tf_by_level_sex_jumptype.R
>>>>
>>>> A ver si te sirve. Saludos
>>>>
>>>>
>>>>
>>>> 2012/10/31 Carlos Ortega <cof en qualityexcellence.es>:
>>>> > Hola,
>>>> >
>>>> > La clave está destacada en utilizar "*add=T*" en el segundo barplot
>>>> para
>>>> > superponerle al primero en vez de utilizar "par(new=T)".
>>>> > El destaco los cambios en tu mismo código:
>>>> >
>>>> > par(mar=c(4,4,3,1),            #
>>>> >     omi=c(0.1,0.1,0.1,0.1),    #
>>>> >     las=1,                     #
>>>> >     mex=0.5,                   #
>>>> >     cex.lab = 1,               #
>>>> >     cex.axis=0.7)              # el tamaño de las leyendas
>>>> > barplot(caps$personas,
>>>> >         names.ar=caps$CAPS,
>>>> >         col="blue", border=F, space=.01)
>>>> > *#par(new=T)*
>>>> > barplot(caps$PersonasRCVG, axes=F, ann=F, type="n",
>>>> >         # crea la barra de caps$PersonasRCGV, pero cambia los ejes
>>>> porque
>>>> > el resultado gráfico no es
>>>> >         # coherente con los valores (caps$PersonasRCVG siempre es un
>>>> valor
>>>> > menor que
>>>> >         #                           caps$personas...)
>>>> >         col="grey", border=F, space=.01*, add=T*)
>>>> >
>>>> > Saludos,
>>>> > Carlos Ortega
>>>> > www.qualityexcellence.es
>>>> >
>>>> > El 31 de octubre de 2012 05:32, Mauricio Monsalvo
>>>> > <m.monsalvo en gmail.com>escribió:
>>>> >
>>>> >> Estimados amigos,
>>>> >> Tengo el siguiente set de datos:
>>>> >> caps <- datos[datos$NombreDepartamento=="LANUS", c("CAPS",
>>>> "personas",
>>>> >> "PersonasRCVG", "Con12Meses")]
>>>> >> caps$prevalencia <- round(caps$PersonasRCVG/caps$personas*100,1)
>>>> >>   caps
>>>> >>
>>>> >>      CAPS personas PersonasRCVG Con12Meses prevalencia
>>>> >> 2345 2345     1347          132        211         9.8
>>>> >> 2363 2363    17272         1602       2320         9.3
>>>> >> 2341 2341     1771          241        220        13.6
>>>> >> 2361 2361     2725          371        466        13.6
>>>> >> 2342 2342     4590          538       3615        11.7
>>>> >> 2347 2347    16610         1678       5884        10.1
>>>> >> 2348 2348     2961          373        883        12.6
>>>> >> 2350 2350     8132          990       1180        12.2
>>>> >> 2351 2351     2205          332        208        15.1
>>>> >> 2355 2355     4059          409        548        10.1
>>>> >> 2364 2364     5175          517        696        10.0
>>>> >> 2349 2349     1111          158        459        14.2
>>>> >> 2360 2360      809          127        190        15.7
>>>> >> 2362 2362     3112          358        754        11.5
>>>> >> 2365 2365     2522          340        271        13.5
>>>> >> 2343 2343    12136         1112       5016         9.2
>>>> >> 2344 2344    20956         2365       4161        11.3
>>>> >> 2346 2346     2640          273       1062        10.3
>>>> >> 2357 2357     3143          458        682        14.6
>>>> >> 2358 2358     3432          337        532         9.8
>>>> >> 2340 2340     1733          288        384        16.6
>>>> >> 2352 2352    17358         1694       3511         9.8
>>>> >> 2356 2356    15034         1780      10990        11.8
>>>> >> 2359 2359    15907         1731       6464        10.9
>>>> >> 8924 8924      639          160        103        25.0
>>>> >> 8929 8929      734          107         66        14.6
>>>> >> 8937 8937     2688          527        414        19.6
>>>> >> 8932 8932      858           93         96        10.8
>>>> >>
>>>> >> Y quiero graficar las 4 variables juntas. Creo que casi casi casi lo
>>>> logro,
>>>> >> salvo por (a) la barra de caps$PersonasRCVG, que pareciera cambia los
>>>> >> valores del eje Y a otra escala... creo... y (b) porque me falta
>>>> ordenar el
>>>> >> gráfico por la línea de caps$Con12Meses (de mayor a menor).
>>>> >> Va mi mejor intento:
>>>> >> par(mar=c(4,4,3,1),            #
>>>> >>     omi=c(0.1,0.1,0.1,0.1),    #
>>>> >>     las=1,                     #
>>>> >>     mex=0.5,                   #
>>>> >>     cex.lab = 1,               #
>>>> >>     cex.axis=0.7)              # el tamaño de las leyendas
>>>> >> barplot(caps$personas,
>>>> >>         names.ar=caps$CAPS,
>>>> >>         col="blue", border=F, space=.01)
>>>> >> par(new=T)
>>>> >> barplot(caps$PersonasRCVG, axes=F, ann=F, type="n", # crea la barra
>>>> de
>>>> >> caps$PersonasRCGV, pero cambia los ejes porque el resultado gráfico
>>>> no es
>>>> >> coherente con los valores (caps$PersonasRCVG siempre es un valor
>>>> menor que
>>>> >> caps$personas...)
>>>> >>         col="grey", border=F, space=.01)
>>>> >> par(new=T)
>>>> >> plot(caps$Con12Meses, axes=F, ann=F, type="n")
>>>> >> points(caps$Con12Meses,type="l",col="black")       # Crea la línea
>>>> para
>>>> >> caps$Con12Meses (por la cual quiero ordenar)
>>>> >> points(caps$Con12Meses,  pch=16, col="black")      # agrega puntos
>>>> negros
>>>> >> rellenos a la línea
>>>> >> par(new=T)
>>>> >> plot(caps$prevalencia, axes=F, ann=F, type="n")
>>>> >> axis(4)                                           # Crea el eje
>>>> secundario
>>>> >> points(caps$prevalencia,type="l",col="red")       # Crea la línea
>>>> sobre el
>>>> >> eje secundario
>>>> >> points(caps$prevalencia,  pch=16, col="red")      # agrega puntos
>>>> rojos
>>>> >> rellenos a la línea
>>>> >> text(caps$prevalencia, labels=paste(caps$prevalencia), pos=3,
>>>> col="red", )
>>>> >> # si se quiere poner la prevalencia en el gráfico.
>>>> >> ¿Podrían por favor ayudarme con la solución? Les juro que renegué
>>>> como loco
>>>> >> para llegar a este punto y creo que ya no "veo" más nada en las
>>>> ayudas!
>>>> >> Además, ¿no hay una forma más "simple" de hacerlo?
>>>> >> Muchas gracias, como siempre. (Algún día aprenderé...)
>>>> >> --
>>>> >> Mauricio
>>>> >>
>>>> >>         [[alternative HTML version deleted]]
>>>> >>
>>>> >>
>>>> >> _______________________________________________
>>>> >> 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]]
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > 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
>>>
>>
>>
>>
>> --
>> Mauricio
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>



-- 
Mauricio
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20121031/223d9f55/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Lanus según CAPS.png
Type: image/png
Size: 14834 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20121031/223d9f55/attachment-0001.png>


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