在双对数轴图R中绘制幂函数线

时间:2014-12-04 22:02:07

标签: r logging axes

我在将电源功能线绘制到两个轴都在对数刻度上的绘图时遇到问题。我需要将轴保持在对数刻度上。我不想记录转换我的数据。这就是我在绘图函数中使用log="xy"参数的原因,如下所示。

但是,我无法在此图中添加电源功能。到目前为止,我尝试过不同的方法,包括nls(下方),但似乎没有任何效果。

有人可以帮我吗? 谢谢, 迈拉

nls4=nls(Slope~i*CA^-z,start=list(i=0.1,z=-0.04),data=slpca1)
abline(nls4)
plot(Slope~CA,data=slpca1,xlab="Contributing area (ha)",ylab="Slope (m m[-1])",log="xy",
     xlim=c(0.001,1),ylim=c(0.01,1),xaxt="n",yaxt="n",cex.lab=2,cex.axis=1.5,
     cex=2,pch=16,family="serif") 
axis(side=1, at=(c(0.001,0.01,0.1,1)),labels=c(0.001,0.01,0.1,1)) 
axis(side=2,at=(c(0.01,0.1,1)),labels=c(0.01,0.1,1))

1 个答案:

答案 0 :(得分:0)

在此获得帮助的最佳方式是提供一个完全可重复的示例(您向我们提供了代码,但您没有提供slpca1的数据)并尽可能简单地保持该示例(不需要轴标签,字体等,除非它是问题的基本部分。)

因此,我创建了一些假数据,适合您的非线性回归,并绘制了最终的拟合。希望这将有助于您开始,并且您可以根据自己的意愿进行修改。

# create some fake data so I can run your code
CA <- runif(20, 1, 20)
Slope <- 0.1*CA^-0.04 + rnorm(20, 0, 0.001)
slpca1 <- data.frame(CA, Slope)
rm(CA, Slope)

# fit a nonlinear regression
nls4 = nls(Slope ~ i*CA^-z, start=list(i=0.1,z=-0.04), data=slpca1)
# plot the observed values
plot(Slope~CA, data=slpca1, log="xy")
# plot the predicted line
ord <- order(slpca1$CA)
lines(slpca1$CA[ord], predict(nls4)[ord])