You need to enable JavaScript to run this app. 如何延长matplotlib双对数坐标图中的线性回归拟合线以观测轴交点
优惠活动
大模型
产品
解决方案
定价
更多

如何延长matplotlib双对数坐标图中的线性回归拟合线以观测轴交点

代码调整方案

当前拟合线长度受限的核心原因:绘制红色线时直接复用了原始线性段的x值序列,没有基于已经得到的线性拟合趋势扩展x轴范围,仅需修改拟合线的x坐标生成逻辑,即可实现延长效果:

  • 原有通过np.polyfit计算得到的斜率m、截距c无需修改,这两个参数代表双对数坐标下线性段的固定变化趋势,是延长拟合线的计算依据。
  • 不再使用原始的linearf作为拟合线的x输入,自行生成一组覆盖更广范围的x坐标序列。由于绘图采用对数坐标轴,推荐用np.logspace生成在对数刻度上均匀分布的点,避免线在低数值区间出现视觉断档。
  • 沿用原有拟合的斜率、截距计算新x序列对应的y值,直接绘制即可得到完全贴合原趋势的延长拟合线。

关键代码替换

将原有代码中计算短拟合线、绘制短拟合线的片段:

y_fit = np.exp(m*logA + c)
# 以下为原有代码固定部分,无需修改:
# ax.set_xscale('log')
# ax.set_yscale('log')
# ax.set_xlabel('f [kHz]')
# ax.set_ylabel('h$_{21e}$ [A/A]')
# ax.scatter(f, h21e, marker='.', color='k')
# 以上为原有代码固定部分
ax.plot(linearf, y_fit, color='r', linestyle='-')

替换为以下内容:

# 定义拟合线的覆盖范围:示例从1kHz(10^0)延伸到1000kHz(10^3),共生成100个连续点,范围可按需调整
fit_x = np.logspace(0, 3, 100)
# 沿用原有拟合参数计算对应y值,保证延长线和原线性段斜率、截距完全一致
log_fit_x = np.log(fit_x)
y_fit_extended = np.exp(m * log_fit_x + c)

# 绘制延长后的红色拟合线
ax.plot(fit_x, y_fit_extended, color='r', linestyle='-')

注意:由于采用双对数坐标轴,x轴不存在0刻度(对数坐标无法表示0值),所谓“与x轴的交点”实际是拟合线随y值降低逐步靠近x轴下限的变化趋势。可通过调整np.logspace的上限值(比如把上限从1000kHz提到2000kHz)拉长拟合线长度,即可清晰观测到拟合线和x轴的相对位置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 13:06:05