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

如何用Python的Matplotlib绘制传感器值分段线性方程图?

解决Matplotlib绘制分段传感器线性方程图的问题

问题分析

原代码存在几个关键问题:

  • 横轴范围未覆盖STD=5200,导致无法展示分段效果
  • 分段函数的第二段公式错误(应为C(x-STD)+D而非C(x*STD)+D)
  • 未实现分段逻辑,而是直接绘制了两条独立直线
  • 缺少每秒传感器值的红点标注

修正后的代码

import matplotlib.pyplot as plt
import numpy as np

# 定义参数
a = 0.1222
b = 66.268
c = 0.5200
d = 701.7080
STD = 5200

# 生成覆盖STD前后的横轴数据,范围从0到6000,确保包含分段点
x = np.linspace(0, 6000, 1000)

# 计算分段函数的y值:x<STD时用Ax+B,x>STD时用C(x-STD)+D
y = np.where(x < STD, a * x + b, c * (x - STD) + d)

# 模拟每秒采集的传感器数据(替换为你的真实数据即可)
# 这里生成15个随机分布在0-6000之间的传感器值
sensor_x = np.random.uniform(0, 6000, 15)
sensor_y = np.where(sensor_x < STD, a * sensor_x + b, c * (sensor_x - STD) + d)

# 绘制分段函数曲线
plt.plot(x, y, label='分段线性方程', color='blue')

# 用红点标注每秒的传感器值
plt.scatter(sensor_x, sensor_y, color='red', s=30, label='每秒传感器值')

# 添加STD位置的垂直线,增强分段可视化
plt.axvline(x=STD, color='gray', linestyle='--', label=f'STD = {STD}')

# 设置图表标签与标题
plt.xlabel('传感器值(x)')
plt.ylabel('输出值(y)')
plt.title('传感器值与输出值的分段线性关系')

# 显示图例
plt.legend()

plt.show()

关键说明

  • 横轴范围调整:将x范围设为0-6000,完全覆盖STD=5200的前后区间,确保分段效果可见
  • 分段函数实现:使用np.where一次性完成分段计算,也可以拆分x为两部分分别计算后拼接,结果一致
  • 传感器数据处理:模拟的sensor_x和sensor_y可直接替换为你实际采集的每秒数据列表
  • 红点标注:通过plt.scatter绘制红色散点,s参数控制点的大小,确保标注清晰
  • 辅助线:添加灰色虚线标记STD位置,让分段边界更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:57