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

如何使用Python绘制带30秒断点和颜色区分的时间序列数据

实现代码及说明

以下代码可以直接运行生成你需要的带断点、分颜色标注的时间序列图:

import matplotlib.pyplot as plt
import numpy as np

# 原始数据
y_values = [5, 5, 1, 1, 5, 5, 1, 1, 5, 1, 1] 
x_values = np.arange(30, 331, 30)
# 自定义y值对应的颜色映射,可按需修改色值
color_map = {
    5: '#e53935',  # y=5对应红色
    1: '#43a047'   # y=1对应绿色
}

plt.figure(figsize=(10, 3))

# 逐段绘制:连续相同y值的点连线,y值变化处自动断开
i = 0
n = len(x_values)
while i < n - 1:
    current_y = y_values[i]
    # 查找当前y值连续的最远下标
    j = i
    while j < n - 1 and y_values[j+1] == current_y:
        j += 1
    # 绘制该段折线和标记点
    plt.plot(x_values[i:j+1], y_values[i:j+1], 
             color=color_map[current_y], marker='x', linewidth=2)
    i = j + 1

# 图表样式配置
plt.xlabel('时间(秒)')
plt.ylabel('状态值')
plt.xticks(x_values)  # 显示所有30秒间隔的刻度
plt.ylim(0, 6)  # 调整y轴范围提升显示效果
plt.grid(axis='x', linestyle='--', alpha=0.7)  # 增加垂直网格线便于定位时间断点

plt.show()

相关使用建议

  • 需要修改不同状态对应的颜色时,直接调整color_map字典内的色值即可,支持matplotlib兼容的所有颜色格式(命名颜色、十六进制色、RGB值等)
  • 需要调整标记点样式时,修改marker参数即可,可选值包括o(圆点)、s(方块)等,额外增加markersize参数可以调整标记点大小
  • 需要增加图例时,可在plt.show()前添加以下代码:
    from matplotlib.lines import Line2D
    plt.legend(handles=[
        Line2D([], [], color=color_map[5], marker='x', label='状态A'),
        Line2D([], [], color=color_map[1], marker='x', label='状态B')
    ])
    
  • 如果后续使用非固定30秒间隔的时间序列数据,只需把x_values替换为实际时间戳数组,现有绘制逻辑无需修改即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:27:05