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 如何。
当我尝试为一组完全相同的值生成密度图时,我得到了以下图
这是我使用的代码:
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 如何。