【问题标题】:How to graph function with two variables in R如何在R中用两个变量绘制函数
【发布时间】:2017-12-19 01:57:51
【问题描述】:

所以,我在过去的四个小时里一直在尝试找到一种有效的方法来绘制具有两个变量的函数的曲线 - 但无济于事。我实际上可以付诸实践的唯一答案是没有像我预期的那样生成多线图。

我创建了一个带有两个变量 x 和 y 的函数,它返回一个连续的数值。我想在一个屏幕上绘制这个函数的结果,其中 x 的某些值和给定范围内的所有可能的 y 值(y 也是一个连续变量)。

类似的东西:

这两个问题确实有点帮助,但我仍然无法到达那里:

Plotting a function curve in R with 2 or more variables

How to plot function of multiple variables in R by initializing all variables but one

我也使用了马赛克包和 plotFun 函数,但结果相当不吸引人且可读性不强:https://www.youtube.com/watch?v=Y-s7EEsOg1E。

也许问题在于我对 R 缺乏熟练度——尽管我已经使用了几个月,所以我不是一个菜鸟。请赐教。

【问题讨论】:

  • 请包含您尝试过的代码;这将帮助其他人帮助你。
  • 按原样,根本无法判断您的问题是什么。您能否生成要绘制的数据,而唯一的问题是在一张图上获得多条线?或者您在使用您的函数生成数据时遇到问题?在任何一种情况下,如果没有您的函数(或合适的示例函数)、有关范围的一些详细信息......当然还有看到您试图知道我们需要从哪里开始解释,我们将无能为力。
  • 回应其他人所说的:stackoverflow.com/questions/5963269/…

标签: r function plot


【解决方案1】:

假设我们有一个带有两个参数的简单函数:

fun <- function(x, y) 0.5*x - 0.01*x^2 + sqrt(abs(y)/2)

我们希望根据以下 x 和 y 值对其进行评估:

xs <- seq(-100, 100, by=1)
ys <- c(0, 100, 300)

下面这一行可能有点难以理解,但它完成了所有工作:

res <- mapply(fun, list(xs), ys)

mapply 允许我们在一系列值中运行具有多个变量的函数。在这里,我们只为“x”参数提供了一个值(请注意,xs 是一个长向量,但由于它在一个列表中 - 它只是一个实例)。我们还提供了“y”参数的多个值。所以该函数将运行 3 次,每次使用相同的 x 值和不同的 y 值。

结果是按列排列的,所以最后我们有 3 列。现在我们只需要绘制:

cols <- c("black", "cornflowerblue", "orange")
matplot(xs, res, col=cols, type="l", lty=1, lwd=2, xlab="x", ylab="result")
legend("bottomright", legend=ys, title="value of y", lwd=2, col=cols)

matplot 函数在这里完成所有工作 - 它为提供的矩阵中的每一列绘制一条线。其他都是装饰。

结果如下:

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2021-07-31
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多