Estoy tratando de trazar dos variables donde N = 700K. El problema es que hay demasiada superposición, por lo que la trama se convierte principalmente en un bloque sólido de negro. ¿Hay alguna forma de tener una "nube" en escala de grises donde la oscuridad de la trama sea una función del número de puntos en una región? En otras palabras, en lugar de mostrar puntos individuales, quiero que la trama sea una "nube", cuanto mayor sea el número de puntos en una región, más oscura será esa región.
r
scatter-plot
usuario702432
fuente
fuente
Respuestas:
Una forma de lidiar con esto es con la mezcla alfa, que hace que cada punto sea ligeramente transparente. Entonces las regiones aparecen más oscuras que tienen más puntos trazados en ellas.
Esto es fácil de hacer en
ggplot2
:Otra forma conveniente de lidiar con esto es (y probablemente más apropiada para la cantidad de puntos que tiene) es el binning hexagonal:
Y también hay un binning rectangular antiguo normal (imagen omitida), que se parece más a su mapa de calor tradicional:
fuente
scale_fill_gradient()
y especifique sus propios colores bajos y altos, o usescale_fill_brewer()
y elija una de las paletas secuenciales.geom_point()
y trazar cada punto individual.También puedes echar un vistazo al
ggsubplot
paquete. Este paquete implementa características que fueron presentadas por Hadley Wickham en 2011 ( http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html ).(A continuación, incluyo la capa de "puntos" con fines ilustrativos).
Sin embargo, esto presenta rocas si tiene una tercera variable para controlar.
O otro enfoque sería usar
smoothScatter()
:fuente
Una descripción general de varias buenas opciones en
ggplot2
:Opción A: puntos transparentes
Opción B: agregar contornos de densidad
Opción C: agregar contornos de densidad rellenos
Opción D: mapa de calor de densidad
Opción E: hexbins
Opción F: alfombras
Combina en una figura:
fuente
La combinación alfa también es fácil de hacer con gráficos base.
Los primeros seis números después del
#
son el color en hexadecimal RGB y los dos últimos son la opacidad, nuevamente en hexadecimal, por lo que 33 ~ 3/16 opaco.fuente
También puede usar líneas de contorno de densidad (
ggplot2
):O combine contornos de densidad con mezcla alfa:
fuente
Puede encontrar útil el
hexbin
paquete. Desde la página de ayuda dehexbinplot
:fuente
geom_pointdenisty
delggpointdensity
paquete (desarrollado recientemente por Lukas Kremer y Simon Anders (2019)) le permite visualizar la densidad y los puntos de datos individuales al mismo tiempo:fuente
Mi método favorito para trazar este tipo de datos es el que se describe en esta pregunta : un diagrama de densidad de dispersión . La idea es hacer un diagrama de dispersión pero colorear los puntos por su densidad (en términos generales, la cantidad de superposición en esa área).
Simultáneamente:
Aquí está el resultado de la respuesta principal a la pregunta vinculada:
fuente
R
.