【发布时间】:2016-09-17 09:38:59
【问题描述】:
我想用 R 绘制一个密度函数并填充它下面的一些区域。我的例子是:
library(ggplot2)
x = seq(-4, 4, 0.1)
y = dnorm(x, mean=0, sd=1)
myDF = data.frame(x,y,xfill=ifelse(x>-1,x,0))
p <- ggplot(myDF, aes(x,y))
p + geom_line(size=1) + geom_area(aes(x=xfill),fill="red")
在 RStudio 中如下图所示。
我在平台上使用 RStudio 版本 0.99.902 和 R 版本 3.3.1 (2016-06-21):x86_64-w64-mingw32/x64 (64-bit) 在以下条件下运行:Windows >= 8 x64 (build 9200 ) 与包 ggplot2_2.1.0
在创建这个问题时我链接到另一个问题 here。现在根据那里的答案之一更改 geom_area 调用
geom_area(aes(x=xfill),fill="red", pos="identity")
最后减小 x 步长
x = seq(-4, 4, 0.01)
以某种方式给了我想要的东西。
我的问题:
- 有什么想法,为什么 0 附近的区域会出现这个问题?
- 为什么 'pos="identity"' 在这里有帮助 - 仍然缺少某些区域?
- 我真的解决了这里的问题吗?
【问题讨论】:
-
我在这里发现了另一个问题(或者可能相同),我将 xfill 设置为 0,对于我不想绘制的 x 值。通过将它们设置为不匹配最小值来解决此问题,在这种情况下:
myDF = data.frame(x,y,xfill=ifelse(x>-1,x,-1))