如何用多个参数绘制函数图

时间:2019-04-12 22:57:30

标签: r plot

我正在尝试在R中使用function(x1,x2,x3,x4){2 * x2 * x4 + x3 ( x1 - 2 * x4)}来绘制此函数curve()的图形。但是,我遇到了:

  

f1(x)中的错误:缺少参数“ x2”,没有默认值

x1 x2 x3x4也应该具有不同的最小值和最大值,但是我会担心的,只需显示任何图形

2 个答案:

答案 0 :(得分:1)

Plotting a function curve in R with 2 or more variables

上面的链接与您的问题相似,可能有助于您解决问题。您可能必须添加功能库里(在功能包中)以预先指定参数。希望有帮助。

答案 1 :(得分:1)

曲线
正如我在评论中已经提到的那样,我不明白您为什么要使用curve,因为它可以接受单个范围内的数字,例如1,2,3,4,然后对其应用公式。因为输入数字形成x轴(因此1,2,3,4 ...),并且公式结果绘制在y轴上,所以这使绘制变得简单明了。在您的情况下,您没有一个输入范围(实际上您有四个范围:x1x2x3x4),因此无法以5D绘制您必须选择x1:x4之一才能在x轴上显示。另外,您有2 * x2 * x4 + x3 ( x1 - 2 * x4)作为公式,但是.. x3 ( ..不能由R直接解释,因此我加了*以使2 * x2 * x4 + x3 * ( x1 - 2 * x4) 然而,如果您想将X3与方括号中的数字相乘,您应该在下面的代码中编辑公式

替代
正如您提到的“ x1 x2 x3和x4都应具有不同的最小值和最大值”一样,我建议您只需编写自己的绘图函数,就像这样(我现在在x轴上显示x1) :

range.plot <- function( func, x1.range, x2.range, x3.range, x4.range ) {
  # Apply formula
  res <- data.frame(x = x1.range, y = func(x1.range, x2.range, x3.range, x4.range))

  # Plot using ggplot2
  ggplot(res, aes(x, y)) + geom_line()
}


fun <- function(x1,x2,x3,x4){2 * x2 * x4 + x3 * ( x1 - 2 * x4)} # note the added *
range.plot(fun, seq(1,10), seq(10,29), seq(5,14), seq(1,10))

这将产生以下情节:
enter image description here