我正在创建两张地图,一张带有等高线,另一张是热图。我正在使用该geom_density2d
功能来创建具有轮廓线的功能,并stat_density2d
创建热图。
请注意,geom_density2d
它似乎没有与 相同的参数geom_density
,它现在包含一个bw
用于指定带宽的参数。
我知道(经过大量搜索)这两个函数都默认使用“Silverman 的经验法则”bw.nrd0
来计算带宽,如本文所述。但是,我想更改带宽计算以使用 Sheather 和 Jones 方法,bw = "SJ"
但不知道如何执行此操作,因为 ggplot2 不接受此参数(geom 和 stat 函数都不接受)。
此处提供了示例数据。
我用来创建等高线图的代码如下:
# Create the contour map with geom_density2d:
contourmap <- ggplot2::ggplot() +
geom_sf(data = phecll,
colour = "black",
fill = "#004529",
alpha = 0.5,
size = 0.75) +
coord_sf() +
geom_density2d(data = rdmdata,
mapping = aes(x = home_long,
y = home_lat,
alpha = 0.5),
inherit.aes = FALSE,
contour_var = "density")
对于热图:
# Create the heatmap with stat_density2d:
heatmap <- ggplot2::ggplot() +
geom_sf(data = phecll,
colour = "black",
fill = "#004529",
alpha = 0.5,
size = 0.75) +
coord_sf() +
stat_density2d(data = rdmdata,
mapping = aes(x = home_long,
y = home_lat,
fill = ..level..,
alpha = ..level..),
size = 0.01,
bins = 50,
geom = "polygon",
inherit.aes = FALSE) +
scale_fill_gradient(low = "blue",
high = "red",
guide = "none") +
scale_alpha(range = c(0, 0.5),
guide = "none")
如何将带宽计算从更改nrd0
为sj
?