Hay dos cosas que afectarán a la suavidad del gráfico: el ancho de banda utilizado para la estimación de la densidad del núcleo y los cortes que se asignan a los colores en el gráfico.
En mi experiencia, para el análisis exploratorio simplemente ajusto el ancho de banda hasta que obtengo un gráfico útil. Demostración a continuación.
library(spatstat)
set.seed(3)
X <- rpoispp(10)
par(mfrow = c(2,2))
plot(density(X, 1))
plot(density(X, 0.1))
plot(density(X, 0.05))
plot(density(X, 0.01))
El simple hecho de cambiar la combinación de colores por defecto no ayudará en nada, ni tampoco cambiar la resolución de los píxeles (en todo caso, la resolución por defecto es demasiado precisa, y debería reducir la resolución y hacer los píxeles más grandes). Aunque es posible que quieras cambiar el esquema de colores por defecto por motivos estéticos, está pensado para ser muy discriminante.
Las cosas que puedes hacer para ayudar al color son cambiar el nivel de la escala a logaritmos (realmente sólo ayudará si tienes un muy proceso no homogéneo), cambiar la paleta de colores para que varíe más en el extremo inferior (sesgo en términos de la especificación de la rampa de color en R), o ajustar la leyenda para que tenga bins discretos en lugar de continuos.
Ejemplos de sesgo en la leyenda adaptada de aquí Y tengo otro post en el sitio de GIS que explica la coloración de los recipientes discretos en un ejemplo bastante simple aquí . Sin embargo, esto no servirá de nada si el patrón está demasiado o poco alisado para empezar.
Z <- density(X, 0.1)
logZ <- eval.im(log(Z))
bias_palette <- colorRampPalette(c("blue", "magenta", "red", "yellow", "white"), bias=2, space="Lab")
norm_palette <- colorRampPalette(c("white","red"))
par(mfrow = c(2,2))
plot(Z)
plot(logZ)
plot(Z, col=bias_palette(256))
plot(Z, col=norm_palette(5))
Para hacer que los colores sean transparentes en la última imagen (donde el primer bin de color es blanco) se puede simplemente generar la rampa de color y luego reemplazar la especificación RGB con colores transparentes. Ejemplo abajo usando los mismos datos que arriba.
library(spatstat)
set.seed(3)
X <- rpoispp(10)
Z <- density(X, 0.1)
A <- rpoispp(100) #points other places than density
norm_palette <- colorRampPalette(c("white","red"))
pal_opaque <- norm_palette(5)
pal_trans <- norm_palette(5)
pal_trans[1] <- "#FFFFFF00" #was originally "#FFFFFF"
par(mfrow = c(1,3))
plot(A, Main = "Opaque Density")
plot(Z, add=T, col = pal_opaque)
plot(A, Main = "Transparent Density")
plot(Z, add=T, col = pal_trans)
pal_trans2 <- paste(pal_opaque,"50",sep = "")
plot(A, Main = "All slightly transparent")
plot(Z, add=T, col = pal_trans2)