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

如何用Pandas设置等间隔递增的X轴刻度以绘制多列数据

解决DataFrame绘图时X轴设置错误的问题

原代码的错误原因

  • 错误调用DataFrame.plot方法:df.plot = (x,y)是完全错误的用法,plot是DataFrame的内置绘图方法,需要通过df.plot(...)的形式调用,而非直接赋值。
  • X轴数组维度不匹配:原代码中np.arange(0, length, 500)生成的数组仅包含20个元素(10000/500=20),但Y轴每列有10000条数据,二者维度不一致,导致绘图报错。

正确解决方案

根据你的需求,提供两种可行的实现方式:

方式1:自定义X轴数据进行绘图

直接生成与Y轴数据长度匹配的时间序列作为X轴,再调用plot方法绘制曲线:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 假设df已包含v1、v2、v3三列数据
data_length = len(df)
# 生成对应10000条数据的时间序列(间隔500秒)
x_time = np.arange(0, data_length * 500, 500)

# 指定X轴和Y轴列进行绘图
df.plot(x=x_time, y=["v1", "v2", "v3"])

# 可选:调整X轴刻度显示间隔(比如每5000秒显示一个刻度)
plt.xticks(np.arange(0, data_length * 500, 5000))

# 添加图表标签和标题
plt.xlabel("时间(秒)")
plt.ylabel("数值")
plt.title("v1/v2/v3随时间变化曲线")
plt.legend()
plt.show()

方式2:保留原索引,替换X轴刻度标签

如果不需要修改数据的X轴底层逻辑,仅需将X轴显示为间隔500秒的序列,可直接绘图后替换刻度标签:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 直接绘制v1、v2、v3三列
df[["v1", "v2", "v3"]].plot()

data_length = len(df)
# 设置X轴刻度:原索引位置对应时间标签
plt.xticks(
    ticks=np.arange(0, data_length, 500),  # 刻度位置(原索引)
    labels=np.arange(0, data_length * 500, 500)  # 显示的时间标签
)

# 添加图表标签和标题
plt.xlabel("时间(秒)")
plt.ylabel("数值")
plt.title("v1/v2/v3随时间变化曲线")
plt.show()

说明

  • 方式1适用于需要将时间序列作为数据一部分参与绘图逻辑的场景;
  • 方式2更简洁,仅修改X轴的显示标签,不改变数据的索引逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:45:48