R:使用Polygon()填充曲线下的区域

时间:2017-11-28 08:56:57

标签: r polygon

是否有通用的方法用polygon()函数填充曲线下的区域?

据我所知,这篇文章的答案是: Fill under line curve我认为polygon(c(min(x), x, max(x)), c(min(y), y, min(y))始终工作,因为它从左下角开始,向上到曲线,向下到按钮然后再回到开头

但它并不总是奏效。有时候,我仍然会得到一个类似于这个问题的图表:Why polygon in R works with a full curve but not with a half curve?其中R只是绘制一条线并在其下方填充。

那么一直有效的输入(或其他功能)是什么?

1 个答案:

答案 0 :(得分:0)

也许na.rm = TRUE需要min(y)?无论如何,这是一个函数,您可以指定要填充的水平边框:

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(dnorm, -4, 0)

enter image description here