R:用多边形()填充曲线下的区域

R:用多边形()填充曲线下的区域,r,polygon,R,Polygon,是否有一种通用的方法可以使用polygon()函数填充曲线下的区域 据我所知,这篇文章的答案是: 我假设多边形(c(min(x),x,max(x)),c(min(y),y,min(y))将始终工作,因为它从左下角开始,向上延伸到曲线,向下延伸到按钮右侧,然后回到起点 但它并不总是有效的。有时,我仍然会得到一个类似于这个问题的图:其中R只是画一条线,并在它下面和上面填充 那么,什么样的iput(或其他函数)可以始终工作?对于min(y),您可能需要na.rm=TRUE?无论如何,这里有一个函数可以

是否有一种通用的方法可以使用polygon()函数填充曲线下的区域

据我所知,这篇文章的答案是: 我假设
多边形(c(min(x),x,max(x)),c(min(y),y,min(y))
将始终工作,因为它从左下角开始,向上延伸到曲线,向下延伸到按钮右侧,然后回到起点

但它并不总是有效的。有时,我仍然会得到一个类似于这个问题的图:其中R只是画一条线,并在它下面和上面填充


那么,什么样的iput(或其他函数)可以始终工作?

对于
min(y)
,您可能需要
na.rm=TRUE
?无论如何,这里有一个函数可以指定要填充的水平边界:

fill_to_border <- function(f, from, to, y_border = 0, col = 1) {
  curve_points <- curve(f, from, to) 
  polygon_x <- c(min(curve_points$x), curve_points$x, max(curve_points$x))
  polygon_y <- c(y_border, curve_points$y, y_border)
  polygon_points <- list(x = polygon_x, y = polygon_y)
  polygon(polygon_points, col = col)
}

fill_to_border(dnorm, -4, 0)

fill\u to\u border对于
min(y)
,您可能需要
na.rm=TRUE
?无论如何,这里有一个函数,您可以指定要填充的水平边框:

fill_to_border <- function(f, from, to, y_border = 0, col = 1) {
  curve_points <- curve(f, from, to) 
  polygon_x <- c(min(curve_points$x), curve_points$x, max(curve_points$x))
  polygon_y <- c(y_border, curve_points$y, y_border)
  polygon_points <- list(x = polygon_x, y = polygon_y)
  polygon(polygon_points, col = col)
}

fill_to_border(dnorm, -4, 0)

fill\u to\u border该问题的答案有什么问题?看起来答案只是确保按
x
对输入数据进行排序(即,用
x[order(x)]
替换
x
,用
y[order(y)]
替换
y
)。如果不是这样,请提供一个答案。答案没有错。我只是想指出,我已经阅读了这个答案,我对它的理解使我想到了解决方案。它不是作为一个批评家,而是作为一种解释。如果我使用
order()
,数据按递增的值排序(y轴上不是我想要的)。很遗憾,我无法制作可复制的示例,因为我无法上载数据集,也无法使用随机值复制数据集…抱歉,我输入了一个错误。
y[顺序(x)]
这个问题的答案有什么问题?看起来答案只是确保按
x
对输入数据进行排序(即,将
x
替换为
x[order(x)]
y
替换为
y[order(y)]
)。如果不是这样,请提供一个答案。答案没有错。我只是想指出,我已经阅读了这个答案,我对它的理解使我想到了解决方案。它不是作为一个批评家,而是作为一种解释。如果我使用
order()
,数据按递增的值排序(y轴上不是我想要的)。很遗憾,我无法制作可复制的示例,因为我无法上载数据集,也无法使用随机值复制数据集…抱歉,我输入了一个错误。
y[顺序(x)]