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

enter image description here

(箭头表示交点)

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

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)

但我得到的不是一对"对称"曲线:

enter image description here

有什么提示吗?(在这个例子中,我没有try 绘制箭头).

推荐答案

要找到交点(你的"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)

enter image description here

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

使用gggplot 2在R中重新调整面板和y轴文本大小

大规模重新标记haven标签数据

多重RHS固定估计

在df中保留原始变量和新变量

找出二叉树中每个 node 在R中的深度?

如何通过判断数据框的一列来压缩另一列?

解析R函数中的变量时出现的问题

在保留列表元素属性的同时替换列表元素

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

变长向量的矢量化和

创建在文本字符串中发现两个不同关键字的实例的数据框

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

我需要使用ggplot2制作堆叠条形图

隐藏基于 case 总数的值

R没有按顺序显示我的有序系数?

分隔日期格式为2020年7月1日

有没有办法更改ggplot2中第二个y轴的比例限制?

具有由向量定义的可变步长的序列

将y轴格式更改为R中的百分比