使用 drc 包在 ggplot 中绘制剂量反应曲线时出错
Error in plotting dose-response curve in ggplot with drc package
尝试使用 drc 包中的 ggplot 绘制剂量反应曲线时,我得到了一个半绘制的图表。我正在尝试按照剂量反应曲线 recent paper 的补充信息中给出的程序进行操作。
这是我的原始数据
请帮我找到解决办法,谢谢!
# Fit a log-logistic model with lower and upper asymptotic limits fixed at respectively 0 and 100
mod.Pyr <- drm(gi ~ conc, data = my_data, fct = LL.4(fixed = c(NA, 0, 100, NA)))
# new dose levels as support for the line
newdata <- expand.grid(conc=exp(seq(log(0.5), log(3000), length=1000)))
# predictions and confidence intervals
pm <- predict(mod.Pyr, newdata=newdata, interval="confidence")
# new data with predictions
newdata$p <- pm[,1]
newdata$pmin <- pm[,2]
newdata$pmax <- pm[,3]
# need to shift conc == 0 a bit up, otherwise there are problems with coord_trans
my_data$conc0 <- my_data$conc
my_data$conc0[my_data$conc0 == 0] <- 0.5
# plotting the curve
ggplot(my_data, aes(x = conc0, y = gi)) +
geom_point() +
geom_ribbon(data=newdata, aes(x=conc, y=p, ymin=pmin, ymax=pmax), alpha=0.2) +
geom_line(data=newdata, aes(x=conc, y=p)) +
coord_trans(x="log") +
xlab("Concentration (mg/l)") + ylab("Growth inhibition")
您有 conc
个值高于 log(3000)
,并且您只为 log(100)
之前的值创建了 newdata
,所以您要到 log(3000)
才能适合,您只需要将 expand.grid 中的 log(100)
增加到更高的值,例如 log(3000)
:
newdata <- expand.grid(conc=exp(seq(log(0.5), log(3000), length=100)))
尝试使用 drc 包中的 ggplot 绘制剂量反应曲线时,我得到了一个半绘制的图表。我正在尝试按照剂量反应曲线 recent paper 的补充信息中给出的程序进行操作。 这是我的原始数据
请帮我找到解决办法,谢谢!
# Fit a log-logistic model with lower and upper asymptotic limits fixed at respectively 0 and 100
mod.Pyr <- drm(gi ~ conc, data = my_data, fct = LL.4(fixed = c(NA, 0, 100, NA)))
# new dose levels as support for the line
newdata <- expand.grid(conc=exp(seq(log(0.5), log(3000), length=1000)))
# predictions and confidence intervals
pm <- predict(mod.Pyr, newdata=newdata, interval="confidence")
# new data with predictions
newdata$p <- pm[,1]
newdata$pmin <- pm[,2]
newdata$pmax <- pm[,3]
# need to shift conc == 0 a bit up, otherwise there are problems with coord_trans
my_data$conc0 <- my_data$conc
my_data$conc0[my_data$conc0 == 0] <- 0.5
# plotting the curve
ggplot(my_data, aes(x = conc0, y = gi)) +
geom_point() +
geom_ribbon(data=newdata, aes(x=conc, y=p, ymin=pmin, ymax=pmax), alpha=0.2) +
geom_line(data=newdata, aes(x=conc, y=p)) +
coord_trans(x="log") +
xlab("Concentration (mg/l)") + ylab("Growth inhibition")
您有 conc
个值高于 log(3000)
,并且您只为 log(100)
之前的值创建了 newdata
,所以您要到 log(3000)
才能适合,您只需要将 expand.grid 中的 log(100)
增加到更高的值,例如 log(3000)
:
newdata <- expand.grid(conc=exp(seq(log(0.5), log(3000), length=100)))