Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot中设置黄土线置信区间阴影的限制_R_Ggplot2_Loess - Fatal编程技术网

R 在ggplot中设置黄土线置信区间阴影的限制

R 在ggplot中设置黄土线置信区间阴影的限制,r,ggplot2,loess,R,Ggplot2,Loess,我在ggplot中正确显示黄土线时遇到问题。我有几个变量,没有一个可以低于零,例如高度、重量和丰度。我试图用黄土线在ggplot中绘制这些数据。使用一些虚构的数据: library(ggplot2) df <- as.data.frame(rep(1:7, each = 5)) df[,2] <- c(0,1,5,0,6,0,7,2,9,1,1,18,4,2,34,8,18,24,56,12,12,18,24,63,48, 40,70,53,75,98,145,17

我在ggplot中正确显示黄土线时遇到问题。我有几个变量,没有一个可以低于零,例如高度、重量和丰度。我试图用黄土线在ggplot中绘制这些数据。使用一些虚构的数据:

library(ggplot2)

df <- as.data.frame(rep(1:7, each = 5))

df[,2] <- c(0,1,5,0,6,0,7,2,9,1,1,18,4,2,34,8,18,24,56,12,12,18,24,63,48,
       40,70,53,75,98,145,176,59,98,165)

names(df) <- c("x", "y")

ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  geom_smooth() +
  scale_y_continuous(limits = c(-20,200))


但这使得黄土线周围的部分阴影区域消失了。有没有办法使绘图在y轴限制为零的情况下工作,从而切断部分阴影区域,或者首先在黄土线上设置一个限制,使其不会创建低于零的阴影区域?

我们可以计算覆盖
统计平滑的
ymin
aes(注意与
geom_smooth
的区别):

 ggplot(df, aes(x=x, y=y)) +
   geom_point() +
   geom_smooth() +
   coord_cartesian(ylim = c(0,200))
ggplot(df,aes(x=x,y=y))+
几何点()+
静态平滑(geom='ribbon',aes(ymin=ifelse(…ymin.<0,0,…ymin.),
α=0.3)+
几何平滑(se=假)+
连续刻度(限值=c(-20200))
#>`geom_smooth()`using method='黄土'和公式'y~x'
#>`geom_smooth()`using method='黄土'和公式'y~x'


由(v0.2.0)于2018年5月22日创建.

这能解决OP的问题吗?灰色CI降到零以下是的,这能解决OP的问题,而且是一个非常简单的解决方案。这应该是最重要的答案。你也可以尝试一种更基于统计的方法来处理泊松误差。如果你只是将灰色区域的一部分切除,你希望灰色区域有什么解释?它不会是pr操作置信区间。如果没有适当的约束统计模型,您只需在该点绘制一个随机形状。最好不要使用该选项。您可以对y轴使用此选项(如果需要,也可以对x轴使用此选项):
scale\u y\u continuous(limits=c(min\u y,max\u y),oob=squish)
 ggplot(df, aes(x=x, y=y)) +
   geom_point() +
   geom_smooth() +
   coord_cartesian(ylim = c(0,200))