绘制部分透明的密度多边形

时间:2021-06-22 02:32:01

标签: r plot kernel-density

如何使这个红色多边形部分透明,以便我可以看到它下面的点?

library(ks)
set.seed(1234)
x <- runif(1000) + -150
y <- runif(1000) +   20

my.data <- data.frame(x,y)
my.matrix <- as.matrix(my.data)

my_gps_hpi <- Hpi(x = my.matrix, pilot = "samse", pre = "scale")

my.fhat <- kde(x = my.matrix, compute.cont = TRUE, h = my_gps_hpi,
               xmin = c(min(my.data$x), min(my.data$y)),
               xmax = c(max(my.data$x), max(my.data$y)),
               bgridsize = c(100, 100))
my.contours <- c(75)

contourLevels(my.fhat, cont = my.contours)
contourSizes(my.fhat, cont = my.contours, approx = TRUE)

plot(my.data$x, my.data$y)
plot(my.fhat, lwd = 3, display = "filled.contour", cont = my.contours, add = TRUE)

png(file="transparent_polygon_June21_2021.png")
     plot(my.data$x, my.data$y)
     plot(my.fhat, lwd = 3, display = "filled.contour", cont = my.contours, add = TRUE)
dev.off()

enter image description here

1 个答案:

答案 0 :(得分:0)

我想我已经通过在文件 kde.R 中挖掘源代码找到了一个解决方案。

我对代码做了几处更改。

  1. my.fhat 更改为 fhat,因为源代码可能需要 fhat

  2. 出于同样的原因,将 my.contours 更改为 contours

  3. 出于同样的原因,将 contourLevels(my.fhat, cont = my.contours) 更改为 hts <- contourLevels(fhat, cont = contours)

  4. 从源代码中提取 col.fun 并将其更改为返回我选择的颜色:col.fun <- function(n) {rgb(255, 0, 0, 127, maxColorValue=255)}

  5. plot 语句修改为如下代码所示。

这是修改后的 R 代码:

setwd('C:/Users/mark_/Documents/ctmm/density_in_R/')

set.seed(1234)

library(ks)
x <- runif(1000) + -150
y <- runif(1000) +   20

my.data <- data.frame(x,y)
my.matrix <- as.matrix(my.data)

gps_hpi <- Hpi(x = my.matrix, pilot = "samse", pre = "scale")

fhat <- kde(x = my.matrix, compute.cont = TRUE, h = gps_hpi,
                xmin = c(min(my.data$x), min(my.data$y)),
                xmax = c(max(my.data$x), max(my.data$y)),
                bgridsize = c(100, 100))
contours <- c(75)

hts <- contourLevels(fhat, cont = contours)
contourSizes(fhat, cont = contours, approx = TRUE)

col.fun <- function(n) {rgb(255, 0, 0, 127, maxColorValue=255)}
col.fun(1)

plot(fhat, lwd = 3, display = "filled.contour", cont = contours, col.fun = col.fun(1), drawpoints=TRUE)

png(file="transparent_polygon_June22_2021.png")
      plot(fhat, lwd = 3, display = "filled.contour", cont = contours, col.fun = col.fun(1), drawpoints=TRUE)
dev.off()

enter image description here

相关问题