Elemental... 
Gracias de nuevo.

Mauricio

-----Original Message-----
From: Carlos Ortega <cof@qualityexcellence.es>
Date: Wed, 31 Oct 2012 15:21:43 
To: Mauricio Monsalvo<m.monsalvo@gmail.com>
Cc: r-help-es<r-help-es@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@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@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@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@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@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@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@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


	[[alternative HTML version deleted]]

