Matplotlib报错:x与y首维度不一致,求解决方法
问题解决:x和y维度不匹配错误及线性回归线拟合
错误原因
你的代码里,每次循环计算的p是单个数值(标量),而x是包含101个元素的数组,plt.plot()要求传入的x和y必须是相同长度的序列,所以才会报“x和y不具有相同的首维度”的错误。而且当前循环里每次画单个点就立刻显示,也不符合绘制完整曲线、拟合回归线的需求。
修正后的代码
先收集所有z和对应p值的数组,再绘制数据并拟合回归线:
import matplotlib.pyplot as plt import numpy as np # 生成所有z值的数组,批量计算对应p值 z_values = np.arange(0, 10100, 100) p_values = 1013 * np.power((1 - ((z_values/1000) / 45.846)), 5.263) # 绘制原始数据点 plt.scatter(z_values, p_values, label='原始数据') # 拟合线性回归线:polyfit返回斜率和截距 slope, intercept = np.polyfit(z_values, p_values, 1) regression_line = slope * z_values + intercept # 绘制回归线 plt.plot(z_values, regression_line, color='red', label=f'回归线: y={slope:.4f}x + {intercept:.4f}') # 设置图表属性 plt.xlabel('z') plt.ylabel('p') plt.legend() plt.show()
关键说明
- 用
np.arange批量生成z的数组,直接运算得到所有p值,避免循环里的单个标量问题 np.power比内置pow更适配数组运算场景np.polyfit(z, p, 1)用于拟合一次(线性)回归,参数依次是自变量、因变量、多项式次数- 用
scatter展示原始数据点,plot绘制回归线,两者对比更直观
内容的提问来源于stack exchange,提问作者Ali Hasani
相关产品推荐
相关产品推荐

