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]]
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]]
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 >
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
[[alternative HTML version deleted]]
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 [[alternative HTML version deleted]]
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]]
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]]
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>
Hola,
Realmente el problema aparece por utilizar "plot(..." tras un el
par(new=T), se vuelven a recalcular los valores gráficos por eso se produce
el desajuste. No por la presencia de "NAs".
He utilizado una aproximación diferente. Capturo los centros de las barras
de los dos gráficos que luego utilizo al pintar los "points" como las
coordenadas "x", así sí que quedan centrados. No llamo a plot().
El único problema de esta aproximación es que a la hora de pintar
caps$prevalencia queda asociado al límite del eje "y" de entre 0 y
25000
(apenas se vería). Por eso he de multiplicarlo por 1000 para que pueda
verse bien.
Luego el eje "y" secundario lo construyo recuperando el número de
cortes y
los límites del primario dividiéndolo por 1000 para que así casen con los
valores que luego se representan con "text" que son los valores reales
de
cpas$prevalencia.
Un poco artesanal, pero el acabado está ajustado completamente.
Si lo patentas (y alguien te paga algo), acuérdate de donar algo a la
lista......
########################################################
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
bar.one<- barplot(
caps$personas,
names.ar=caps$CAPS,
col="blue", border=F, axes=F, ylim=c(0,
1.20*max(caps$personas))
)
axis(2, col.axis="blue")
bar.two <- barplot(caps$PersonasRCVG, axes=F, ann=F,
col="grey", border=F, add=T)
par.l <- par()
par(new=T)
points(bar.one, caps$Con12Meses, type="b", col="black",
pch=16)
par(new=T)
points(bar.one, 1000*caps$prevalencia, type="b", col="red",
pch=16)
# Para el eje de la derecha obtengo los límites y las divisiones del de la
izquierda y lo construyo en axis()
ax.val <- seq(par.l$yaxp[1], par.l$yaxp[2], length.out=par.l$yaxp[3])
axis(side=4,at=ax.val, labels=ax.val/1000, col="tomato",
col.ticks="tomato", col.axis="tomato",
col.lab="black")
text(bar.one, 1000*caps$prevalencia, labels=paste(caps$prevalencia),
col="red", cex=0.90, pos=1)
box()
########################################################
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 31 de octubre de 2012 23:50, Mauricio Monsalvo
<m.monsalvo@gmail.com>escribió:
> 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@gmail.com>escribió:
>
> **
>> Elemental...
>> Gracias de nuevo.
>> Mauricio
>> ------------------------------
>> *From: * Carlos Ortega <cof@qualityexcellence.es>
>> *Date: *Wed, 31 Oct 2012 15:21:43 +0100
>> *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
>>
>
>
>
> --
> Mauricio
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]
Ahora si, queda precioso! Voy a tratar de entender bien el código, como para ver si puedo dejarlo un poco menos "artesanal" (como vos decís) y vamos por la patente a nombre de la lista. Y si nos pagan algo, hacemos un encuentro de usuarios de R transatlántico. Muchas gracias. Mauricio El 1 de noviembre de 2012 09:15, Carlos Ortega <cof@qualityexcellence.es>escribió:> Hola, > > Realmente el problema aparece por utilizar "plot(..." tras un el > par(new=T), se vuelven a recalcular los valores gráficos por eso se produce > el desajuste. No por la presencia de "NAs". > > He utilizado una aproximación diferente. Capturo los centros de las barras > de los dos gráficos que luego utilizo al pintar los "points" como las > coordenadas "x", así sí que quedan centrados. No llamo a plot(). > > El único problema de esta aproximación es que a la hora de pintar > caps$prevalencia queda asociado al límite del eje "y" de entre 0 y 25000 > (apenas se vería). Por eso he de multiplicarlo por 1000 para que pueda > verse bien. > > Luego el eje "y" secundario lo construyo recuperando el número de cortes y > los límites del primario dividiéndolo por 1000 para que así casen con los > valores que luego se representan con "text" que son los valores reales de > cpas$prevalencia. > > Un poco artesanal, pero el acabado está ajustado completamente. > > Si lo patentas (y alguien te paga algo), acuérdate de donar algo a la > lista...... > > > ######################################################## > 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 > bar.one<- barplot( > caps$personas, > names.ar=caps$CAPS, > col="blue", border=F, axes=F, ylim=c(0, > 1.20*max(caps$personas)) > ) > axis(2, col.axis="blue") > > bar.two <- barplot(caps$PersonasRCVG, axes=F, ann=F, > col="grey", border=F, add=T) > > > par.l <- par() > par(new=T) > points(bar.one, caps$Con12Meses, type="b", col="black", pch=16) > par(new=T) > points(bar.one, 1000*caps$prevalencia, type="b", col="red", pch=16) > # Para el eje de la derecha obtengo los límites y las divisiones del de la > izquierda y lo construyo en axis() > ax.val <- seq(par.l$yaxp[1], par.l$yaxp[2], length.out=par.l$yaxp[3]) > axis(side=4,at=ax.val, labels=ax.val/1000, col="tomato", > col.ticks="tomato", col.axis="tomato", col.lab="black") > text(bar.one, 1000*caps$prevalencia, labels=paste(caps$prevalencia), > col="red", cex=0.90, pos=1) > box() > ######################################################## > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 31 de octubre de 2012 23:50, Mauricio Monsalvo <m.monsalvo@gmail.com>escribió: > > 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@gmail.com>escribió: >> >> ** >>> Elemental... >>> Gracias de nuevo. >>> Mauricio >>> ------------------------------ >>> *From: * Carlos Ortega <cof@qualityexcellence.es> >>> *Date: *Wed, 31 Oct 2012 15:21:43 +0100 >>> *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 >>> >> >> >> >> -- >> Mauricio >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Mauricio [[alternative HTML version deleted]]
Hola, No lo he llegado a probar pero a lo mejor "retorciendo" esta función se puede conseguir lo mismo. - paquete: plotrix - función: twoord.plot() En esta librería "plotrix" es donde se van agrupando funciones para conseguir gráficos de estos especiales... Saludos, Carlos Ortega www.qualityexcellence.es El 1 de noviembre de 2012 14:41, Mauricio Monsalvo <m.monsalvo@gmail.com>escribió:> Ahora si, queda precioso! > Voy a tratar de entender bien el código, como para ver si puedo dejarlo un > poco menos "artesanal" (como vos decís) y vamos por la patente a nombre de > la lista. Y si nos pagan algo, hacemos un encuentro de usuarios de R > transatlántico. > Muchas gracias. > Mauricio > > El 1 de noviembre de 2012 09:15, Carlos Ortega <cof@qualityexcellence.es>escribió: > > Hola, >> >> Realmente el problema aparece por utilizar "plot(..." tras un el >> par(new=T), se vuelven a recalcular los valores gráficos por eso se produce >> el desajuste. No por la presencia de "NAs". >> >> He utilizado una aproximación diferente. Capturo los centros de las >> barras de los dos gráficos que luego utilizo al pintar los "points" como >> las coordenadas "x", así sí que quedan centrados. No llamo a plot(). >> >> El único problema de esta aproximación es que a la hora de pintar >> caps$prevalencia queda asociado al límite del eje "y" de entre 0 y 25000 >> (apenas se vería). Por eso he de multiplicarlo por 1000 para que pueda >> verse bien. >> >> Luego el eje "y" secundario lo construyo recuperando el número de cortes >> y los límites del primario dividiéndolo por 1000 para que así casen con los >> valores que luego se representan con "text" que son los valores reales de >> cpas$prevalencia. >> >> Un poco artesanal, pero el acabado está ajustado completamente. >> >> Si lo patentas (y alguien te paga algo), acuérdate de donar algo a la >> lista...... >> >> >> ######################################################## >> 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 >> bar.one<- barplot( >> caps$personas, >> names.ar=caps$CAPS, >> col="blue", border=F, axes=F, ylim=c(0, >> 1.20*max(caps$personas)) >> ) >> axis(2, col.axis="blue") >> >> bar.two <- barplot(caps$PersonasRCVG, axes=F, ann=F, >> col="grey", border=F, add=T) >> >> >> par.l <- par() >> par(new=T) >> points(bar.one, caps$Con12Meses, type="b", col="black", pch=16) >> par(new=T) >> points(bar.one, 1000*caps$prevalencia, type="b", col="red", pch=16) >> # Para el eje de la derecha obtengo los límites y las divisiones del de >> la izquierda y lo construyo en axis() >> ax.val <- seq(par.l$yaxp[1], par.l$yaxp[2], length.out=par.l$yaxp[3]) >> axis(side=4,at=ax.val, labels=ax.val/1000, col="tomato", >> col.ticks="tomato", col.axis="tomato", col.lab="black") >> text(bar.one, 1000*caps$prevalencia, labels=paste(caps$prevalencia), >> col="red", cex=0.90, pos=1) >> box() >> ######################################################## >> >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> El 31 de octubre de 2012 23:50, Mauricio Monsalvo <m.monsalvo@gmail.com>escribió: >> >> 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@gmail.com>escribió: >>> >>> ** >>>> Elemental... >>>> Gracias de nuevo. >>>> Mauricio >>>> ------------------------------ >>>> *From: * Carlos Ortega <cof@qualityexcellence.es> >>>> *Date: *Wed, 31 Oct 2012 15:21:43 +0100 >>>> *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 >>>> >>> >>> >>> >>> -- >>> Mauricio >>> >> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > > > > -- > Mauricio >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]