Gracias Emilio. Si, son asimétricos porque se mueven en rangos distintos. De hecho, miden cosas distintas, pero una muestra no puede ser positiva y negativa a la vez. Me planteo multiplicar las positivas por 2 y al editar el mapa corregirlo para que indique los valores reales. Eso funcionaría, pero son muchos mapas y quizás haya una función en ggplot que evite el problema directamente. Manuel El vie., 20 sept. 2019 a las 7:38, Emilio L. Cano (<emilopezcano en gmail.com>) escribió:> Hola Manuel, > > Ten en cuenta que la intensidad del color depende de la escala de la > variable. Limits = c(-200, 200) pone los que hay fuera con el color NA por > defecto (gris). No estoy seguro pero creo que si los positivos no se > distingue el color es porque es ?casi blanco?, supongo que debido a que los > datos son muy asimétricos y los valores por debajo de -200 son muy grandes > en valor absoluto con respecto a los que hay por encima de 200. Y por > definición, es una escala de color que depende de la magnitud de la > variable. > > Tal vez puedas mejorar la visualización cambiando el color del punto > central (argumento ?mid?), en vez de blanco, por algún tono de rojo > intermedio. > > Si esto no lo soluciona intenta pegar el ejemplo con un subconjunto de > datos con el que se pueda reproducir (es fácil con datapasta+reprex: > https://reprex.tidyverse.org/articles/articles/datapasta-reprex.html) > > Un saludo, > Emilio > > > El 19 sept 2019, a las 18:34, Manuel Mendoza <mmendoza en fulbrightmail.org> > escribió: > > > > Muy buenas. Quiero hacer un mapa que me pinte en azul los valores > negativos > > y en rojo los positivos. Los negativos llegan hasta -400 y los positivos > > hasta 200. Si pongo limits=c(-200, 200), me colorea bien los positivos > > (rojo), pero los negativos por debajo de -200 me los pone gris. Si pongo > > limits=c(-400, 200), me colorea bien los negativos (azul), pero los > > positivos apenas se ven. Necesito que me pinte los azules como el > primero, > > y los azules como el segundo. > > Gracias > > > > Este es el código: > > ggplot(legend=FALSE)+ > > theme(panel.background=element_blank())+ > > theme(panel.grid.major = element_blank())+ > > theme(panel.grid.minor = element_blank())+ > > > > theme(axis.text.x=element_blank(),axis.text.y=element_blank())+ > > theme(axis.ticks = element_blank()) + xlab("") + ylab("")+ > > > > geom_point(data=SGData2,aes(x=lon,y=lat,color=Ch7085),shape=15,size=1.5) > + > > * scale_colour_gradient2(limits=c(-400, 200),low > > "blue",high="red",midpoint=0*, > > guide="colourbar")+geom_path(data=world, aes(x=long, > > y=lat,group=group))+ > > labs(title = "ch7085") > > > > [[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 > >[[alternative HTML version deleted]]
Hola, Una alternativa que suele funcionar es la de crear una columna adicional en tu dataframe que dé cuenta del color dependiendo de los valores del resto de las variables que tú decidas y utilizar este vector como valor para cada punto, en vez de dejar que sea la función "scale_colour_gradient" la que decida el color... Gracias, Carlos. El vie., 20 sept. 2019 a las 10:30, Manuel Mendoza (< mmendoza en fulbrightmail.org>) escribió:> Gracias Emilio. Si, son asimétricos porque se mueven en rangos distintos. > De hecho, miden cosas distintas, pero una muestra no puede ser positiva y > negativa a la vez. Me planteo multiplicar las positivas por 2 y al editar > el mapa corregirlo para que indique los valores reales. Eso funcionaría, > pero son muchos mapas y quizás haya una función en ggplot que evite el > problema directamente. > Manuel > > El vie., 20 sept. 2019 a las 7:38, Emilio L. Cano (<emilopezcano en gmail.com > >) > escribió: > > > Hola Manuel, > > > > Ten en cuenta que la intensidad del color depende de la escala de la > > variable. Limits = c(-200, 200) pone los que hay fuera con el color NA > por > > defecto (gris). No estoy seguro pero creo que si los positivos no se > > distingue el color es porque es ?casi blanco?, supongo que debido a que > los > > datos son muy asimétricos y los valores por debajo de -200 son muy > grandes > > en valor absoluto con respecto a los que hay por encima de 200. Y por > > definición, es una escala de color que depende de la magnitud de la > > variable. > > > > Tal vez puedas mejorar la visualización cambiando el color del punto > > central (argumento ?mid?), en vez de blanco, por algún tono de rojo > > intermedio. > > > > Si esto no lo soluciona intenta pegar el ejemplo con un subconjunto de > > datos con el que se pueda reproducir (es fácil con datapasta+reprex: > > https://reprex.tidyverse.org/articles/articles/datapasta-reprex.html) > > > > Un saludo, > > Emilio > > > > > El 19 sept 2019, a las 18:34, Manuel Mendoza < > mmendoza en fulbrightmail.org> > > escribió: > > > > > > Muy buenas. Quiero hacer un mapa que me pinte en azul los valores > > negativos > > > y en rojo los positivos. Los negativos llegan hasta -400 y los > positivos > > > hasta 200. Si pongo limits=c(-200, 200), me colorea bien los positivos > > > (rojo), pero los negativos por debajo de -200 me los pone gris. Si > pongo > > > limits=c(-400, 200), me colorea bien los negativos (azul), pero los > > > positivos apenas se ven. Necesito que me pinte los azules como el > > primero, > > > y los azules como el segundo. > > > Gracias > > > > > > Este es el código: > > > ggplot(legend=FALSE)+ > > > theme(panel.background=element_blank())+ > > > theme(panel.grid.major = element_blank())+ > > > theme(panel.grid.minor = element_blank())+ > > > > > > theme(axis.text.x=element_blank(),axis.text.y=element_blank())+ > > > theme(axis.ticks = element_blank()) + xlab("") + > ylab("")+ > > > > > > > geom_point(data=SGData2,aes(x=lon,y=lat,color=Ch7085),shape=15,size=1.5) > > + > > > * scale_colour_gradient2(limits=c(-400, 200),low > > > "blue",high="red",midpoint=0*, > > > guide="colourbar")+geom_path(data=world, aes(x=long, > > > y=lat,group=group))+ > > > labs(title = "ch7085") > > > > > > [[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 > > > > > > [[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]]
No sé muy bien, Carlos, como hacerlo, pero no parece más sencillo que lo de multiplicar por 2 los positivos y después editar el mapa. De lo que decías, Emilio, de cambiar el color del punto central creo que haría más confusa la interpretación. El vie., 20 sept. 2019 a las 10:33, Carlos Ortega (<cof en qualityexcellence.es>) escribió:> Hola, > > Una alternativa que suele funcionar es la de crear una columna adicional > en tu dataframe que dé cuenta del color dependiendo de los valores del > resto de las variables que tú decidas y utilizar este vector como valor > para cada punto, en vez de dejar que sea la función "scale_colour_gradient" > la que decida el color... > > Gracias, > Carlos. > > El vie., 20 sept. 2019 a las 10:30, Manuel Mendoza (< > mmendoza en fulbrightmail.org>) escribió: > >> Gracias Emilio. Si, son asimétricos porque se mueven en rangos distintos. >> De hecho, miden cosas distintas, pero una muestra no puede ser positiva y >> negativa a la vez. Me planteo multiplicar las positivas por 2 y al editar >> el mapa corregirlo para que indique los valores reales. Eso funcionaría, >> pero son muchos mapas y quizás haya una función en ggplot que evite el >> problema directamente. >> Manuel >> >> El vie., 20 sept. 2019 a las 7:38, Emilio L. Cano (< >> emilopezcano en gmail.com>) >> escribió: >> >> > Hola Manuel, >> > >> > Ten en cuenta que la intensidad del color depende de la escala de la >> > variable. Limits = c(-200, 200) pone los que hay fuera con el color NA >> por >> > defecto (gris). No estoy seguro pero creo que si los positivos no se >> > distingue el color es porque es ?casi blanco?, supongo que debido a que >> los >> > datos son muy asimétricos y los valores por debajo de -200 son muy >> grandes >> > en valor absoluto con respecto a los que hay por encima de 200. Y por >> > definición, es una escala de color que depende de la magnitud de la >> > variable. >> > >> > Tal vez puedas mejorar la visualización cambiando el color del punto >> > central (argumento ?mid?), en vez de blanco, por algún tono de rojo >> > intermedio. >> > >> > Si esto no lo soluciona intenta pegar el ejemplo con un subconjunto de >> > datos con el que se pueda reproducir (es fácil con datapasta+reprex: >> > https://reprex.tidyverse.org/articles/articles/datapasta-reprex.html) >> > >> > Un saludo, >> > Emilio >> > >> > > El 19 sept 2019, a las 18:34, Manuel Mendoza < >> mmendoza en fulbrightmail.org> >> > escribió: >> > > >> > > Muy buenas. Quiero hacer un mapa que me pinte en azul los valores >> > negativos >> > > y en rojo los positivos. Los negativos llegan hasta -400 y los >> positivos >> > > hasta 200. Si pongo limits=c(-200, 200), me colorea bien los >> positivos >> > > (rojo), pero los negativos por debajo de -200 me los pone gris. Si >> pongo >> > > limits=c(-400, 200), me colorea bien los negativos (azul), pero los >> > > positivos apenas se ven. Necesito que me pinte los azules como el >> > primero, >> > > y los azules como el segundo. >> > > Gracias >> > > >> > > Este es el código: >> > > ggplot(legend=FALSE)+ >> > > theme(panel.background=element_blank())+ >> > > theme(panel.grid.major = element_blank())+ >> > > theme(panel.grid.minor = element_blank())+ >> > > >> > > theme(axis.text.x=element_blank(),axis.text.y=element_blank())+ >> > > theme(axis.ticks = element_blank()) + xlab("") + >> ylab("")+ >> > > >> > > >> geom_point(data=SGData2,aes(x=lon,y=lat,color=Ch7085),shape=15,size=1.5) >> > + >> > > * scale_colour_gradient2(limits=c(-400, 200),low >> > > "blue",high="red",midpoint=0*, >> > > guide="colourbar")+geom_path(data=world, aes(x=long, >> > > y=lat,group=group))+ >> > > labs(title = "ch7085") >> > > >> > > [[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 >> > >> > >> >> [[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]]