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

在Tkinter窗口重采样时序数据绘图时遇KeyError问题求助

解决Tkinter中Matplotlib绘制重采样时序数据的KeyError问题

错误原因

你把Test Time列转成Datetime类型后设为了DataFrame的索引,还执行了dp.drop(columns=['Test Time'],inplace=True)删掉了原列。重采样得到的dp2里根本没有Test Time这个列,所以调用dp2['Test Time']自然会抛出KeyError。此时dp2的索引就是你需要的时间序列。

修复方案

有两种简单的解决方式:

方案1:直接使用索引(推荐,更高效)

修改绘制散点图的代码,用dp2.index作为x轴数据:

ax3.scatter(dp2.index, dp2['Temperature'], color='g')

方案2:将索引转为普通列

如果习惯用列名访问数据,可以在重采样后把索引转回列:

dp2=dp.resample('5min').mean().reset_index()
# 之后就可以正常调用dp2['Test Time']
ax3.scatter(dp2['Test Time'], dp2['Temperature'], color='g')

完整修复后的代码(方案1)

import pandas as pd
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

dp = pd.read_excel('demo11.xlsx')
dp.index=pd.to_datetime(dp['Test Time'])
dp.drop(columns=['Test Time'],inplace=True)
dp2=dp.resample('5min').mean() 

root = tk.Tk()
figure3 = Figure(figsize=(5, 4), dpi=100)
ax3 = figure3.add_subplot(111)
# 改用索引作为x轴数据
ax3.scatter(dp2.index, dp2['Temperature'], color='g')
scatter3 = FigureCanvasTkAgg(figure3, root)
scatter3.get_tk_widget().pack(side=tk.LEFT, fill=tk.BOTH)
ax3.legend(['Temperature'])
ax3.set_xlabel('Test Time')
ax3.set_title('Test Time Vs. Temperature')
# 自动旋转x轴标签,彻底解决重叠问题
ax3.tick_params(axis='x', rotation=45)
root.mainloop()

额外补充:添加ax3.tick_params(axis='x', rotation=45)可以自动旋转x轴的时间标签,刚好满足你最初避免X轴数据重叠的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:35:28