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

需求:在列值变化后添加垂直线(附数据与绘图代码)

嘿,我来帮你搞定这个在RecordType值变化时给绘图添加垂直线的需求!下面是具体的实现思路和完整代码,完全适配你的数据和现有代码结构:

实现步骤与完整代码

核心思路

要实现这个功能,关键是先找出RecordType列值发生变化的索引位置,然后在绘图时针对这些位置添加垂直线标记。具体分这几步:

  • 读取CSV数据并确认列名匹配
  • 定位RecordType值切换的索引点
  • 绘制AccX曲线的同时,在切换点添加垂直线
  • 自定义线条样式让标记更清晰

完整可运行代码

import matplotlib as mpl
mpl.use('MacOSX')
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 读取你的数据文件
data = pd.read_csv('myData.csv')

# 找出RecordType发生变化的索引位置
# diff()计算相邻元素差值,不为0的位置就是值变化的地方
change_indices = data.index[data['RecordType'].diff() != 0].tolist()
# 可选:如果想要标记第一个类型的起点(索引0),取消下面两行注释
# if not change_indices or change_indices[0] != 0:
#     change_indices.insert(0, 0)

# 设置绘图尺寸
figsize = (15, 7)
fig, ax = plt.subplots(figsize=figsize)

# 绘制AccX的原始曲线
ax.plot(data['AccX'], label='AccX Reading')

# 遍历变化索引,添加垂直线
for idx in change_indices:
    # 只给第一条线加图例标签,避免重复
    line_label = 'RecordType Change' if idx == change_indices[0] else ""
    # 绘制红色虚线,透明度0.7避免遮挡数据
    ax.axvline(x=idx, color='red', linestyle='--', alpha=0.7, label=line_label)

# 添加图表标签和图例
ax.set_xlabel('Data Index')
ax.set_ylabel('AccX Value')
ax.set_title('AccX Data with RecordType Transition Markers')
ax.legend()

# 显示图形
plt.show()

代码细节说明

  • 定位变化点:data['RecordType'].diff()会计算每一行和前一行的差值,当RecordType变化时差值不为0,我们通过这个条件筛选出对应的索引
  • 垂直线样式:ax.axvline()是Matplotlib绘制垂直线的专用函数,你可以根据喜好调整color(比如'blue')、linestyle(比如'-'实线)、alpha(透明度)参数
  • 图例优化:通过判断是否是第一个变化点来添加标签,这样图例里只会显示一次“RecordType Change”,不会重复

注意事项

  • 确保你的CSV文件里的列名和代码里的AccX、RecordType完全一致,不然会报错
  • 如果你的RecordType初始值(索引0)也需要标记,就取消代码里那两行注释,把索引0加入变化列表
  • 可以根据数据的密度调整垂直线的样式,比如数据点很多时用更细的线条或者更低的透明度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:37:17