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

matplotlib绘制X轴格式为%H:%M的放大插图时Timedelta不可迭代报错

报错原因

  • 第45行报错是因为ztdate = indate['UTC'][2700]-indate['UTC'][1800]计算得到的是单个时间差对象,不是可迭代的时间序列,无法用for循环遍历。
  • 其他逻辑问题:
    • 插图绘图时df.iloc[19+i]取值逻辑错误,应该取索引1800-2700对应行、第19+i列的值
    • 不需要单独计算插图的时间序列,直接复用主图已处理好的time序列切片即可
    • 没有手动限制插图的Y轴范围为需求的-0.5到1

修正后可运行代码

import matplotlib.pyplot as plt
import matplotlib.pylab as pl
import matplotlib.dates as md
from mpl_toolkits.axes_grid1.inset_locator import (inset_axes, InsetPosition, mark_inset)
import numpy as np
import pandas as pd

# 读取数据并转换UTC列为datetime格式
df = pd.read_csv("cpt_202110240757.csv")
df['UTC'] = pd.to_datetime(df['UTC'])

colors = pl.cm.viridis(np.linspace(0,1,3))

# 处理主图时间序列
tdate = df['UTC']-df['UTC'][0]
zero = df['UTC'][0]
time = [zero + t for t in tdate]
zero = md.date2num(zero)
time = [t-zero for t in md.date2num(time)]
    
fig1 = plt.figure(figsize=(18,12), dpi=80)
fig1.suptitle('Position / Time', fontsize=14, fontweight='bold')
ax = fig1.add_subplot(2,1,1)
names = ['delta y','delta x','delta z']
      
# 绘制主图
for i in range(len(names)):
    ax.plot(time, df.iloc[:, 19+i], label=names[i], color=colors[i])
    
ax.grid(True)
ax.set_ylabel('Absolute Error (m)')
ax.xaxis_date()
ax.xaxis.set_major_formatter(md.DateFormatter("%H:%M"))
ax.set_xlabel('Time (h:m)')
plt.legend(loc='upper right')

# 创建插图坐标系
ax2 = plt.axes([0,0,1,1])
ip = InsetPosition(ax, [0.4,0.4,0.5,0.5])
ax2.set_axes_locator(ip)

# 取对应00:30-00:45区间的索引切片
start_idx, end_idx = 1800, 2700
inset_time = time[start_idx:end_idx+1]
# 绘制插图内容
for i in range(len(names)):
    ax2.plot(inset_time, df.iloc[start_idx:end_idx+1, 19+i], color=colors[i])

# 限制插图坐标轴范围符合需求
ax2.set_xlim(time[start_idx], time[end_idx])
ax2.set_ylim(-0.5, 1)

# 添加主图和插图的连接指示线
mark_inset(ax, ax2, loc1=2, loc2=4, fc="none", ec='0.5')

# 设置插图格式
ax2.grid(True)
ax2.xaxis_date()
ax2.xaxis.set_major_formatter(md.DateFormatter("%H:%M"))

plt.show()

运行效果

运行后会生成带局部放大插图的时序图,插图展示X轴00:30到00:45、Y轴-0.5到1范围的数值,同时自带主图与插图的连接指示线,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:36:02