geom_density()表示一组完全相同的值

时间:2015-09-14 00:57:05

标签: r ggplot2 density-plot

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

以下是我使用的代码:

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的垂直线?

1 个答案:

答案 0 :(得分:3)

这只是做你告诉它要做的事情。查找adjust函数的density参数,因为这会影响bw(带宽)参数。由于您对数据有所了解,因此您也可以将内核类型更改为更合适(尽管在此示例中确实没有必要)。

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

enter image description here

“内置”density功能并不是非常精确(尝试整合x / y结果,看看你有多久完全 1)。您可以使用bkde中的KernSmooth函数来获得更准确的结果/图表:

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)

enter image description here

但是,我对你想要实现的如何更加好奇。