我在 python 中使用 loglog 函数绘制简单的二维图,如下所示:
plt.loglog(x,y,label='X vs Y');
X 和 Y 都是 n
大小的 float 列表。
我想在同一张图上画一条线。我试过 numpy.polyfit ,但我一事无成。
如果您的图形已经是对数对数比例,您如何使用 polyfit 拟合一条线?
最佳答案
Numpy 不关心 matplotlib 图的轴是什么。
我假设您认为 log(y)
是 log(x)
的某个多项式函数,并且您想找到该多项式?如果是这种情况,则运行 numpy.polyfit
关于数据集的对数:
import numpy as np
logx = np.log(x)
logy = np.log(y)
coeffs = np.polyfit(logx,logy,deg=3)
poly = np.poly1d(coeffs)
poly
现在是 log(x)
中的多项式,返回 log(y)
。为了拟合以预测 y
值,您可以定义一个函数来对您的多项式取幂:
yfit = lambda x: np.exp(poly(np.log(x)))
您现在可以在 matplotlib loglog
绘图上绘制拟合线:
plt.loglog(x,yfit(x))
然后像这样显示
plt.show()
关于python - 在对数对数刻度上使用 matplotlib 拟合曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760903/