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

如何为车辆速度时间序列图按电池状态绘制双色标签

修正代码实现方案

原有代码直接对Battery_Status == 1的过滤子集绘图,会把非连续的状态1点强行连通,且未指定状态0区间的绿色样式,可按如下方式调整:

首先对数据集做预处理,标记连续的相同电池状态区间:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.lines import Line2D

# 为每一段连续的相同电池状态分配唯一分组ID,避免跨状态区间连线
trip_1567['status_group'] = (trip_1567['Battery_Status'].diff() != 0).cumsum()

然后按分组绘制不同颜色的时间序列:

fig = plt.figure(figsize=(35,5)) 
# 若不需要1行2列的子图布局,可将121改为111
ax = plt.subplot(121)

# 遍历每个连续状态分组绘图
for _, group_data in trip_1567.groupby('status_group'):
    current_status = group_data['Battery_Status'].iloc[0]
    line_color = 'red' if current_status == 1 else 'green'
    sns.lineplot(x='index', y='VehicleSpeed_km_h_', data=group_data, color=line_color, ax=ax)

# 添加自定义图例
custom_legend = [
    Line2D([0], [0], color='green', lw=2),
    Line2D([0], [0], color='red', lw=2)
]
ax.legend(custom_legend, ['未充电(电池状态=0)', '充电中(电池状态=1)'])

ax.set_xlabel('离散时间')
ax.set_ylabel('车辆速度(km/h)')
plt.show()

核心逻辑说明

  • 用差分+累加的方式生成连续状态分组ID,确保每个分组内的电池状态一致且时序连续,不会出现跨区间的错误连线
  • 每个分组单独绘制线段,根据状态值自动匹配对应颜色
  • 自定义图例可明确两种颜色的业务含义,也可根据需求删除对应代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:08