Есть две вещи, которые будут влиять на гладкость графика: полоса пропускания, используемая для оценки плотности ядра, и разрывы, которым вы назначаете цвета на графике.
По моему опыту, для исследовательского анализа я просто настраиваю полосу пропускания, пока не получу полезный график. Демонстрация ниже.
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))
Простое изменение цветовой схемы по умолчанию не поможет, равно как и изменение разрешения пикселей (если разрешение по умолчанию слишком точное, вам следует уменьшить разрешение и увеличить пиксели). Хотя вы можете изменить цветовую схему по умолчанию для эстетических целей, она предназначена для высокой степени дискриминации.
Вещи, которые вы можете сделать, чтобы помочь цвету, изменить уровень шкалы на логарифмы (это действительно поможет, только если у вас очень неоднородный процесс), изменить цветовую палитру, чтобы она менялась более низко (смещение в терминах спецификации цветовой шкалы в R) или измените легенду, чтобы иметь дискретные ячейки вместо непрерывных.
Примеры смещения в легенде адаптированы отсюда , и у меня есть еще один пост на сайте ГИС, объясняющий раскраску дискретных корзин в довольно простом примере здесь . Это не поможет, хотя, если шаблон закончен или недостаточно сглажен, хотя для начала.
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))
Чтобы сделать цвета прозрачными на последнем изображении (где первый цветовой контейнер белый), можно просто сгенерировать цветовую линейку и затем заменить спецификацию RGB прозрачными цветами. Пример ниже, используя те же данные, что и выше.
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)