当创建一个在值之间具有尖锐过渡的函数密度图时,我得到的是对角线而不是尖锐的垂直线。
我正在尝试绘制正态分布的密度图,该密度图在某个点上比例会突然改变。我得到的图通过使垂直线变为对角线来平滑过渡,这不是我想要的。
dnorm_segment <- function(x, c=1, factor1 = 1, factor2 = 1)
dnorm(x)*ifelse(x<=c, factor1, factor2)
ggplot(data.frame(x=c(0, 2)), aes(x)) + stat_function(fun = dnorm_segment, args = list(c = 1, factor1 = 0.5, factor2 = 2), xlim= c(-5,5),
color = blue, geom = "area", fill = blue, size = 1, alpha = 0.5)
Here's the output of the above code. 我想看到一条垂直线落在1,但该线不是完全垂直。 非常感谢!
答案 0 :(得分:0)
较高的n
应该会有所帮助,默认为101:
ggplot(data.frame(x=c(0, 2)), aes(x)) +
stat_function(fun = dnorm_segment,
args = list(c = 1, factor1 = 0.5, factor2 = 2),
xlim= c(-5,5), n = 1000,
color = "blue", geom = "area", fill = "blue",
size = 1, alpha = 0.5)
我在这里注意到n = 101
默认值:?stat_function
:
stat_function {ggplot2} R说明文件每个x的计算功能 值说明此统计信息可以轻松地将函数叠加在 现有图的顶部。用均匀网格调用该函数 沿x轴间隔的值,并绘制结果(默认情况下) 用一条线。
用法stat_function(映射= NULL,数据= NULL,geom =“路径”,
position =“ identity”,...,fun,xlim = NULL, n = 101 ,args = list(),na.rm = FALSE,show.legend = NA,inherit.aes = TRUE) 争论