【问题标题】:ggplot fitted distributions aren't quite level with the x axisggplot 拟合分布与 x 轴不完全一致
【发布时间】:2017-03-30 05:53:00
【问题描述】:

我正在尝试以类似于jhowardhere 进行细微更改的方式对来自“mixtools”包的输出数据进行建模。提供的示例按预期工作,他的解决方案适用于我的数据,但是拟合的分布似乎......倾斜。

注意两个分布是如何在 x 轴上方略微倾斜的。

使用人工数据集不再显示问题。

`sample.ratio`=c(rnorm(120000,0.386,0.0842),rnorm(200000,0.653,0.1153))
`mixmdl_k2.sample`=normalmixEM(`sample.ratio`, k=2)

ggplot_mixEM <- function(EM) {
  require(ggplot2)
  x       <- with(EM,seq(min(x),max(x),len=1000))
  pars    <- with(EM,data.frame(comp=colnames(posterior), mu, sigma,lambda))
  em.df   <- data.frame(x=rep(x,each=nrow(pars)),pars)
  em.df$y <- with(em.df,lambda*dnorm(x,mean=mu,sd=sigma))
  ggplot(data.frame(x=EM$x),aes(x,y=..density..)) + 
    geom_histogram(fill=NA,color="black")+
    geom_polygon(data=em.df,aes(x,y,fill=comp),color="grey50", alpha=0.5)+
    scale_fill_discrete("Component\nModes",labels=format(em.df$mu,digits=3))+
    geom_density(color="red",linetype="dotted")
}
ggplot_mixEM(`mixmdl_k2.sample`)

。分布填充现在是水平的,尽管它们也不再受限于 (0,1) 区间。

关于我的数据:它的范围明确地从 0 到 1,并且由 mixtools 建模的双峰分布是预期的。使用scale_x_continuous(limits=c(-0.1,1.1)) 增加 x 比例并不能解决问题。上面链接中的第一个解决方案由Spacedman 提供,也适用于我的数据,但给出了相同的“倾斜图”结果。

有谁知道为什么会发生这种情况以及如何解决这种倾斜?有没有办法强制将阴影扩展到 x 轴?

谢谢。

编辑:在示例代码中添加。

【问题讨论】:

  • 您应该在问题中包含reproducible example,其中包含示例输入数据和用于制作绘图的代码。
  • 我添加了我的代码示例,但人工数据集不再出现问题。
  • 那么确定您的数据与模拟数据有何不同会很有用。现在您似乎只在x 的范围内计算多边形,但分布在极端情况下可能不是 0。可能最好扩大您计算值的范围。另外,你从哪里养成了在反引号中引用变量名的奇怪习惯?
  • 反引号是因为我的大多数数据的名称中都有数字(正如您在第二个中看到的那样),而当数字是第一个字符时,RStudio 不喜欢它多变的。我最近一直试图不以数字开头变量,但我离题了......我不确定样本数据集和真实数据集有何不同。 &gt; head(`sample.ratio`) [1] 0.4416384 0.4001051 0.5458209 0.2530325 0.4094072 0.3403063 &gt; head(`20-03_UG.Ratio`) [1] 0.6800000 0.2826087 0.6153846 0.3333333 0.4137931 0.3333333扩大计算范围需要修改哪一步?
  • 原来是x &lt;- with(EM,seq(min(x),max(x),len=1000)) 行。我把它改成了 max(1.1) 并且成功了。

标签: r ggplot2


【解决方案1】:

换行

x &lt;- with(EM,seq(min(x),max(x),len=1000))

x       <- with(EM,seq(min(x),max(1.1),len=1000))

似乎已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多