R geom_ribbon未在间隔内正确着色密度曲线下的区域
我正试图用下面的代码在对数正态密度图下的某个时间间隔对该区域进行着色。这在过去使用其他密度函数和区间对我有效,但由于某种原因,现在它产生了你可以在图中看到的缺陷R geom_ribbon未在间隔内正确着色密度曲线下的区域,r,ggplot2,density-plot,R,Ggplot2,Density Plot,我正试图用下面的代码在对数正态密度图下的某个时间间隔对该区域进行着色。这在过去使用其他密度函数和区间对我有效,但由于某种原因,现在它产生了你可以在图中看到的缺陷 库(ggplot2) 图书馆(plyr) 图书馆(dplyr) 图书馆(tidyr) 这里的问题是,您试图制作一条由两块组成的缎带。因此,两个预期的红色区域尝试相互连接:ymax左侧区域结束,而ymax右侧区域开始,以及ymin相同。可能在过去,您总是使用这种方法来计算分布尾部,而这个问题从未出现过 要解决这个问题,您需要手动创建两个
库(ggplot2)
图书馆(plyr)
图书馆(dplyr)
图书馆(tidyr)
这里的问题是,您试图制作一条由两块组成的缎带。因此,两个预期的红色区域尝试相互连接:ymax
左侧区域结束,而ymax
右侧区域开始,以及ymin
相同。可能在过去,您总是使用这种方法来计算分布尾部,而这个问题从未出现过
要解决这个问题,您需要手动创建两个geom\u功能区。一种不太具侵入性的方式是
gg <- ggplot(data = df, aes(x = x, ymin = 0, ymax = f))
gg <- gg + geom_ribbon(aes(fill = factor("Not participating")))
gg <- gg + geom_ribbon(data = df[df$area == "Participating", ], aes(fill = area))
gg <- gg + theme(legend.title = element_blank())
gg
gg <- ggplot(data = df, aes(x = x, ymin = 0, ymax = f))
gg <- gg + geom_ribbon(aes(fill = factor("Not participating")))
gg <- gg + geom_ribbon(data = df[df$area == "Participating", ], aes(fill = area))
gg <- gg + theme(legend.title = element_blank())