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

Python绘图:将时序图X轴时间戳替换为自定义名称及报错解决

解决Matplotlib替换时间序列X轴标签时的ConversionError问题

你遇到的ConversionError是因为plt.xticks的第一个参数传错了类型——示例代码里用的是数值型的X轴坐标(比如0、1、2),但你直接传入了原始的时间戳数据(字符串或未解析的datetime),Matplotlib无法将其转换为轴的单位。

修正后的代码

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据时解析时间列,方便后续处理
df = pd.read_csv("measurements.csv", sep=",", parse_dates=["Date"])

# 要显示的目标天数(对应数据中的第1到第7行)
use_days = [1, 2, 3, 4, 5, 6, 7]
# 转换为0起始的索引位置
tick_positions = [day - 1 for day in use_days]
# 生成自定义标签
tick_labels = [f"day{day}" for day in use_days]

# 绘图:用行索引作为X轴坐标(避免时间类型转换问题)
plt.plot(df.index, df["Temperature"])  # 替换为你的温度列名称

# 设置X轴刻度:位置用索引值,标签用自定义名称
plt.xticks(tick_positions, tick_labels, rotation=45, fontsize=12)

# 可选:添加图表标签和标题
plt.xlabel("Day")
plt.ylabel("Temperature")
plt.title("Daily Temperature Trend")

plt.tight_layout()  # 防止标签被截断
plt.show()

关键修改说明

  1. 刻度位置用索引而非原始时间:
    绘图时用df.index(数值型的行索引)作为X轴坐标,plt.xticks的第一个参数传入对应行的索引值,和示例代码的逻辑保持一致,彻底避免时间类型转换错误。
  2. 简化标签生成逻辑:
    直接根据use_days生成对应的dayN标签,不需要遍历整个Date列,代码更简洁高效。
  3. 解析时间列(可选但推荐):
    用parse_dates=["Date"]读取数据时自动解析时间列,后续如果需要基于时间做其他处理会更方便。

备选方案(如果坚持用时间作为X轴)

如果你的绘图代码是基于时间列的(plt.plot(df["Date"], df["Temperature"])),可以把刻度位置换成解析后的时间值,但必须确保时间列是datetime类型:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("measurements.csv", sep=",", parse_dates=["Date"])
use_days = [1, 2, 3, 4, 5, 6, 7]

# 获取对应行的时间值作为刻度位置
tick_positions = df["Date"].iloc[[day-1 for day in use_days]]
tick_labels = [f"day{day}" for day in use_days]

plt.plot(df["Date"], df["Temperature"])
plt.xticks(tick_positions, tick_labels, rotation=45, fontsize=12)

plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:47:29