r - 绘制相交曲线

问题描述 投票:0回答:1

我想创建一个简单的绘图,显示两条相交的曲线,如下所示:

(用箭头表示交点)

我已经能够使用以下代码绘制相交曲线:

I0 <- log(1)
b <- .1
d <- .014

curve(exp(I0 - b * x), 0, 50, col = "blue", lwd = 2)
curve(exp(d * x) - 1, 0, 50, add = TRUE, col = "red", lwd = 2)

但是我得到的并不是一对“对称”的曲线:

有什么提示吗? (对于这个例子,我没有尝试绘制箭头)。

r curve
1个回答
0
投票

要找到交点(您的“d”),您可以使用

uniroot

f <- function(x) exp(I0 - b * x)
g <- function(x) exp(I0 - b * (30-x))
    
I0 <- log(1)
b <- 0.1

x <- uniroot(function(x) f(x) - g(x), interval=c(0,30))$root
y <- g(x)

curve(exp(I0 - b * x), 0, 30, col="blue", lwd=2)
curve(exp(I0 - b * (30-x)), 0, 30, col="red", lwd=2, add=TRUE)

y.axs <- par("usr")[3:4]
y0 <- y + diff(y.axs) / 10

arrows(x0=x, y0=y0, x1=x, y1=y, length = 0.15)
text(x=x, y=y0, expression(hat(S)), pos=3)

© www.soinside.com 2019 - 2024. All rights reserved.