如何将列表存储的多维度数据不同维度分别绘制到不同子图
Python matplotlib 实现多子图时序数据绘制
若未安装matplotlib依赖,可先执行命令
pip install matplotlib完成安装。
你可以直接使用Python的matplotlib库实现需求,完整可运行代码如下:
import matplotlib.pyplot as plt # 原始数据 time = [1633093403.754783918, 1633093403.755350983, 1633093403.760918965, 1633093403.761298577, 1633093403.761340378, 1633093403.761907443] data = [[0,1], [1,1], [0,0], [1,0], [0,1], [1,1]] # 提取两列待绘制数据 y_col1 = [item[0] for item in data] y_col2 = [item[1] for item in data] # 创建2行1列的子图布局 fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(10, 6)) # 绘制第一个子图:data[n][0] 随时间变化 # 若需要更符合0-1跳变的展示效果,可将plot替换为step ax1.plot(time, y_col1, marker='o', color='#2c7fb8') ax1.set_ylabel('data[n][0]') ax1.grid(alpha=0.3) # 关闭时间戳的偏移显示,保证数值完整展示 ax1.ticklabel_format(useOffset=False, style='plain') # 绘制第二个子图:data[n][1] 随时间变化 ax2.plot(time, y_col2, marker='o', color='#ff7f0e') ax2.set_xlabel('Unix timestamp') ax2.set_ylabel('data[n][1]') ax2.grid(alpha=0.3) ax2.ticklabel_format(useOffset=False, style='plain') # 自动调整子图间距,避免标签重叠 plt.tight_layout() plt.show()
关键逻辑说明
- 先通过列表推导从
data中拆分出两个维度的待绘制序列 - 使用
plt.subplots创建上下排列的两个子图对象,分别绑定两个绘图轴 - 额外添加
ticklabel_format配置,避免长时间戳默认被matplotlib截断显示为偏移量 - 若你的数据是状态跳变类型,可将
plot方法替换为step,更符合离散状态变化的可视化需求
内容的提问来源于stack exchange,提问作者aripod
相关产品推荐
相关产品推荐

