虽然我知道在R中有一系列用于生成热图的函数,但问题是我无法生成视觉上吸引人的图。例如,以下图像是我要避免的热图的很好示例。第一个明显缺乏细节,而另一个(基于相同的观点)太详细而无法使用。这两个图都是由spatstat R包中的density()函数生成的。
如何获得更多的“流量”?我的目标是获得更多商用SpatialKey(屏幕截图)软件能够产生的外观。
有什么提示,算法,程序包或代码行可以带我朝这个方向前进吗?
虽然我知道在R中有一系列用于生成热图的函数,但问题是我无法生成视觉上吸引人的图。例如,以下图像是我要避免的热图的很好示例。第一个明显缺乏细节,而另一个(基于相同的观点)太详细而无法使用。这两个图都是由spatstat R包中的density()函数生成的。
如何获得更多的“流量”?我的目标是获得更多商用SpatialKey(屏幕截图)软件能够产生的外观。
有什么提示,算法,程序包或代码行可以带我朝这个方向前进吗?
Answers:
有两件事会影响绘图的平滑度,内核密度估计所使用的带宽以及在绘图中为颜色分配的中断。
以我的经验,为进行探索性分析,我只是调整带宽,直到获得有用的图形为止。下面的演示。
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),或调整图例以使其具有离散的容器而不是连续的容器。
图例中存在偏见的示例从此处改编,并且在GIS网站上还有另一篇文章解释了在此处的一个非常简单的示例中为离散的垃圾箱着色。如果从一开始就对模式进行过度或不足的处理,这些将无济于事。
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)
您可能会从akima包中受益于interp函数。如果需要,这将使您可以将矩阵插值到另一个分辨率。要制作类似于链接示例的内容,您需要插值到非常精细的网格(也许xo和yo的长度约为1000)。这将为您提供一个新的矩阵,您可以使用image()进行绘制。如果要透明,这将需要一些额外的工作。用调色板做到这一点并不容易,因此您可能最终不得不将每个网格绘制为具有指定颜色的多边形。