Python双对数分布图加拟合直线
时间: 2023-08-14 14:14:21 浏览: 323
好的,下面是Python代码,可以绘制双对数分布图并加上拟合直线:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(1, 11)
y = np.array([1, 3, 5, 10, 20, 30, 50, 100, 200, 500])
# 对数转换
x_log = np.log(x)
y_log = np.log(y)
# 绘制双对数分布图
plt.scatter(x_log, y_log)
# 拟合直线
z = np.polyfit(x_log, y_log, 1)
p = np.poly1d(z)
plt.plot(x_log,p(x_log),"r--")
# 设置坐标轴标签
plt.xlabel('log(x)')
plt.ylabel('log(y)')
# 显示图形
plt.show()
```
解释一下代码:
首先,我们生成了一组数据,其中`x`为1~10的整数,`y`为任意的10个数字。
然后,对`x`和`y`进行对数转换,得到`x_log`和`y_log`。
接着,使用`matplotlib`库绘制双对数分布图,其中`plt.scatter(x_log, y_log)`表示绘制散点图。
最后,使用`numpy`库的`polyfit()`函数进行线性拟合,得到拟合直线的系数`z`,并使用`poly1d()`函数生成拟合直线的函数`p`,最后使用`plt.plot(x_log,p(x_log),"r--")`绘制拟合直线。
最后,添加坐标轴标签,并使用`plt.show()`显示图形。
阅读全文