2014-12-04 247 views
0

我有一个问题,即将幂函数直线绘制到同时具有对数坐标轴的图上。我需要保持对数坐标轴。我不想记录转换我的数据。这就是为什么我在plot函数中使用log="xy"参数的原因,如下所示。在双对数坐标轴图中绘制幂函数线R

但是,我还没有能够添加电源功能到这个情节。到目前为止,我尝试过不同的方式,包括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)) 
+0

对于'R'中的所有内容如何工作,您似乎都很困惑。为什么在绘制'abline'后绘制**,并且读过'?plot'和'?par'以了解如何将多个图放置在单个图上? – 2014-12-04 22:16:12

回答

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]) 
相关问题