geom_density() 对于一组完全相同的值

geom_density() for a set of values that are all the same

当我尝试为一组完全相同的值生成密度图时,我得到了以下图

这是我使用的代码:

library(data.table)
library(ggplot2)

test <- data.table(x = c(1, 1, 1, 1,1))
ggplot(test, aes(x = x)) +
  geom_density(fill = "blue", alpha = 0.4)

如何让图表只显示 1 处的垂直线?

它只是按照您的指示去做。查找 density 函数的 adjust 参数,因为它会影响 bw(带宽)参数。由于您对数据有所了解,因此您还可以更改内核类型以使其更合适(尽管在本例中确实没有必要)。

ggplot(test, aes(x = x)) +
  geom_density(fill = "blue", alpha = 0.4, kernel="rectangular", adjust=0.0000001)

"built-in" density 函数并不是非常准确(尝试整合 x/y 结果,看看你得到 准确 的频率1)。您可以使用 KernSmooth 中的 bkde 函数来获得更准确的 result/plot:

library(KernSmooth)

den <- bkde(test$x, 
          bandwidth=1, 
          range.x=c(0.99999, 1.00001), 
          truncate=TRUE)

ggplot(data.frame(x=den$x, y=den$y), aes(x, y)) +
  geom_line() + 
  xlim(0, 2)

但是,我更好奇 你想达到什么 vs 如何