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]]