在stat_function图中创建清晰的垂直线

时间:2019-06-14 21:12:54

标签: r ggplot2

当创建一个在值之间具有尖锐过渡的函数密度图时,我得到的是对角线而不是尖锐的垂直线。

我正在尝试绘制正态分布的密度图,该密度图在某个点上比例会突然改变。我得到的图通过使垂直线变为对角线来平滑过渡,这不是我想要的。

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,但该线不是完全垂直。 非常感谢!

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)

enter image description here

我在这里注意到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)   争论