R:用多边形()填充曲线下的区域
是否有一种通用的方法可以使用polygon()函数填充曲线下的区域 据我所知,这篇文章的答案是: 我假设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?无论如何,这里有一个函数可以
多边形(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)]