相关疑难解决方法(0)

在ggplot2中使用nls的pred $ fit出错

所以我在ggplot2中使用nls绘制功率曲线代码如下:

mass <- c(4120,4740,5550,5610,6520,6870,7080,8500,8960,10350,10480,10550,11450,11930,12180,13690,13760,13800,14050,14700,15340,15790,15990,17300,18460,18630,18650,20050,23270,24530,25030,27540,28370,33460,33930,34450,34500)

solv_acc <- c(2760,2990,2990,3180,3900,4010,4140,4680,4750,5330,4980,5860,5930,5570,5910,6790,6690,7020,6240,6620,6600,6860,7940,7600,8250,8530,7410,9160,9140,10300,10440,10390,11020,12640,11920,12110,12650)

df <- data.frame(Mass=log(mass),Solv=log(solv_acc))

plotter <- (ggplot(df, aes(x=Mass, y=Solv)) + geom_point(shape=1) + stat_smooth(method = "nls", formula = y~i*x^z, start=list(i=1,z=0.2)))
plotter <-  plotter + labs(x = "Mass kDa" ,y = "Solvent Accessibility")
print(plotter)
Run Code Online (Sandbox Code Playgroud)

运行上面的代码我收到以下错误:

Error in pred$fit : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

我假设它尝试使用时发生错误predict()

当我nls在同一数据帧上不使用ggplot2 执行时,我没有收到错误

> nls1=nls(Solv~i*Mass^z,start=list(i=1,z=0.2),data=df)
> predict(nls1)
 [1] 7.893393 7.997985 8.115253 8.123230 8.234519 8.273135 8.295350 8.429871 8.468550 8.574147 8.583270 8.588134 8.647895 8.677831 8.692939 8.777944 8.781648 8.783757 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

8
推荐指数
1
解决办法
1536
查看次数

标签 统计

ggplot2 ×1

r ×1