【发布时间】:2016-05-12 22:25:02
【问题描述】:
我有一个非常简单的问题,我似乎无法弄清楚。我想在一张图中绘制两个方程。我试过add = TRUE,但这似乎不起作用。
curve(0.044*x+1.638)
curve(0.3438*x+0.5155, add=TRUE)
【问题讨论】:
我有一个非常简单的问题,我似乎无法弄清楚。我想在一张图中绘制两个方程。我试过add = TRUE,但这似乎不起作用。
curve(0.044*x+1.638)
curve(0.3438*x+0.5155, add=TRUE)
【问题讨论】:
嗯,实际上,curve 确实有效,但您看不到它。为了解释这一点,我们再添加几行代码:
f1 <- function(x) 0.044*x+1.638
f2 <- function(x) 0.3438*x+0.5155
x0 <- seq(0, 1, by = 0.1)
我已经通过f1 和f2 定义了您的示例函数。我还在[0,1] 之间取 11 个采样点进行评估和绘图。为什么是这个范围?因为没有通过参数指定 from、to(参见 ?curve)、curve 将在此范围内绘制。
现在,让我们看看:
>f1(x0)
[1] 1.6380 1.6424 1.6468 1.6512 1.6556 1.6600 1.6644 1.6688 1.6732 1.6776
[11] 1.6820
> f2(x0)
[1] 0.51550 0.54988 0.58426 0.61864 0.65302 0.68740 0.72178 0.75616 0.79054
[10] 0.82492 0.85930
f1 的功能价值远远高于f2。当您第一次调用curve 绘制f1 时,它将修复ylim 大致显示在f1(x) 的范围内。因此,当您添加f2(x) 时,将不会在此ylim 中看到它。
试试这个,首先选择一个共享的ylim:
ylim <- range(c(f1(x0), f2(x0)))
curve(f1, ylim = ylim)
curve(f2, add=TRUE, col = "red")
这种问题是一个常见的陷阱。当您决定在一个图形上绘制多个对象时,您需要设置适当的xlim 和ylim,它足以容纳所有对象。不要指望 R 会“即时”调整这些;它不能这样做。绘制范围在第一次绘制时确定。
【讨论】: