You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为二维数组散点图添加带方程的线性趋势线?

如何给散点图添加线性趋势线并显示方程?

我最近生成了一个8×8的二维数组,绘制了它的散点图,但在尝试添加线性趋势线并显示对应的方程时遇到了问题,也不知道怎么获取这个方程。我的代码目前是这样的(中间有重复导入和截断的错误):

# Import Libraries
import numpy as np
import matplotlib.pyplot as plt

# Generate Random data
a = np.zeros(shape=(8,8))
a[0] = [1,2,3,4,5,6,7,8]
a[1] = [1,0,3,4,0,6,6,8]
a[2] = [1,2,3,4,5,3,7,8]
# Import Libraries(这里重复导入了,还有拼写错误impor...)
import numpy as np
impor...

别担心,我来帮你解决这个问题!要给散点图加线性趋势线并显示方程,我们需要先把二维数组的x、y数据整理成一维,再用numpy做线性拟合,最后把结果画出来并标注方程。具体步骤如下:

1. 修正代码结构,整理数据

首先要避免重复导入库,然后把二维数组中的x和y数据扁平化——因为散点图需要的是一维的x坐标和对应的y坐标数组。我们可以用索引生成和数组扁平化来处理:

import numpy as np
import matplotlib.pyplot as plt

# 生成你的二维数组
a = np.zeros(shape=(8,8))
a[0] = [1,2,3,4,5,6,7,8]
a[1] = [1,0,3,4,0,6,6,8]
a[2] = [1,2,3,4,5,3,7,8]

# 获取每个元素的x(列索引)和y(数组值),扁平化处理
x = np.tile(np.arange(8), 8)  # 每个行的列索引重复8次,生成所有x坐标
y = a.flatten()  # 把二维数组转成一维,得到所有y值

2. 计算线性趋势线的系数

用np.polyfit计算线性拟合的斜率和截距,线性拟合对应1次多项式,所以第二个参数传1:

# 线性拟合,得到系数:[斜率, 截距]
coefficients = np.polyfit(x, y, 1)
slope = coefficients[0]
intercept = coefficients[1]

# 生成趋势线的多项式函数,方便计算对应x的y值
trend_line = np.poly1d(coefficients)

3. 绘制散点图和趋势线,并显示方程

最后把散点图、趋势线画出来,再用plt.text把方程标注在图上:

# 绘制散点图
plt.scatter(x, y, label='Data Points')

# 绘制趋势线
plt.plot(x, trend_line(x), color='red', label='Trend Line')

# 格式化方程文本,保留两位小数让结果更清晰
equation_text = f'y = {slope:.2f}x + {intercept:.2f}'

# 把方程放在图的右上角(位置可以通过调整前两个参数自定义)
plt.text(0.8, 0.9, equation_text, transform=plt.gca().transAxes, fontsize=10)

# 添加图例和坐标轴标签
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()

# 如果你需要直接输出方程的精确系数,也可以打印出来
print(f"线性趋势线方程:y = {slope:.4f}x + {intercept:.4f}")

如果你的二维数组里有很多初始的0值(比如后面几行都是0),这些点可能会干扰拟合结果,你可以过滤掉不需要的数据点:

# 过滤掉y=0的点
mask = y != 0
x_filtered = x[mask]
y_filtered = y[mask]

# 用过滤后的数据重新拟合
coefficients_filtered = np.polyfit(x_filtered, y_filtered, 1)
slope_filtered = coefficients_filtered[0]
intercept_filtered = coefficients_filtered[1]

内容的提问来源于stack exchange,提问作者SAMPHY86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:27:44