【问题标题】:Plotting power function line in a double logarithmic axis plot R在双对数轴图 R 中绘制幂函数线
【发布时间】:2014-12-04 22:02:07
【问题描述】:

我在将幂函数线绘制到两个轴都在对数刻度上的图上时遇到问题。我需要将轴保持在对数刻度上。我不想记录转换我的数据。这就是为什么我在 plot 函数中使用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))

【问题讨论】:

  • 您似乎对R 中的所有内容如何工作感到相当困惑。为什么要在绘制abline 之后 进行绘图,并且您是否阅读了?plot?par 以了解如何在单个图形上放置多个绘图?

标签: r logging axes


【解决方案1】:

在这里获得帮助的最佳方式是提供一个完全可重现的示例(您向我们提供了您的代码,但您没有提供 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])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2015-01-01
    相关资源
    最近更新 更多