我想使用ggplot2绘制一个函数(使用drc包中的drm()
的结果),其中X轴是对数刻度。
我有这样的代码:
library(ggplot2)
args = list(A = 4.224536e+04, B = 1.335570e+00, C = 5.992606e-01, D = 2.341207e+04)
LP.4 = function(x, B, D, A, C) {D + (A-D)/(1+(x/C)^B)}
dose = as.numeric(rev(c(100, 5, 2, 1, 0.5 , 0.25 , 0.1 , 0.05, 0.01, 0.0001)))
predicted = lapply(dose, LP.4, args$B, args$D, args$A, args$C)
df = data.frame(cbind(as.numeric(dose), as.numeric(predicted)))
ggplot(df, aes(x=X1, y=X2)) +
scale_x_log10() +
geom_point()
我确切需要生成点和轴。
我正在尝试使用stat_function()
这样的点来绘制函数:
ggplot(data.frame(x=dose), aes(x)) +
scale_x_log10() +
stat_function(fun = LP.4,
args = list(A = 42245, B = 1.33, C = 0.599, D = 23412))
但我无法得到相同的结果。我做错了什么?
答案 0 :(得分:0)
您的问题与此post中解决的问题类似。使用scale_x_log10,获取x的基数10日志,然后传递给stat_function进行评估。尝试以下内容:
LP.4mod <- function(x, ...) LP.4(10^x,... )
ggplot(data.frame(x=dose), aes(x)) +
scale_x_log10() +
stat_function(fun = LP.4mod,
args = list(A = 42245, B = 1.33, C = 0.599, D = 23412))