Python双对数分布图加拟合直线
时间: 2023-08-14 20:14:22 浏览: 36
好的,我可以为您提供一些参考代码,您可以根据自己的数据来进行修改和调整:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 生成随机数据
x = np.logspace(0, 3, 50)
y = np.random.lognormal(mean=4, sigma=2, size=50)
# 绘制双对数分布图
plt.scatter(x, y)
plt.xscale('log')
plt.yscale('log')
plt.xlabel('x')
plt.ylabel('y')
# 定义拟合函数
def func(x, a, b):
return a * x**b
# 进行拟合
popt, pcov = curve_fit(func, x, y)
# 绘制拟合直线
x_fit = np.logspace(0, 3, 100)
y_fit = func(x_fit, *popt)
plt.plot(x_fit, y_fit, 'r-', label='fit: a=%5.3f, b=%5.3f' % tuple(popt))
plt.legend()
plt.show()
```
在这个例子中,我们使用 `numpy` 生成了一组随机数据,然后使用 `matplotlib` 绘制了双对数分布图。接着,我们使用 `scipy.optimize` 中的 `curve_fit` 函数进行拟合,并绘制了拟合直线。您可以根据自己的数据来进行修改和调整。