2015-09-14 49 views
0

当我尝试生成一组都是相同的值的密度的情节,我碰到下面的情节 enter image description heregeom_density()为一组的值都是一样的

下面是代码我用过:

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处显示垂直线?

回答

3

这只是做你告诉它做的事情。查找density函数的adjust参数,因为这会影响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

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

+0

谢谢!我只是想在视觉上比较一系列的密度,其中之一就是上面的。 – K23