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

如何创建含744个数据点的31天X轴以匹配Y轴数据绘图

解决31天744小时数据的X轴匹配问题

嘿,我懂你的困扰!31天刚好是744小时(31×24),咱们要做的就是让X轴精准对应每一个小时的数据点,这样才能和你的Y轴数据完美适配。你之前用np.arange踩的坑在于,手动计算步长很容易出错,而且arange是左闭右开的区间逻辑,大概率会导致最终生成的列表长度和744对不上。

下面给你两种简单靠谱的解决方案:

方案1:用时间序列生成精准X轴(推荐,更直观)

用pandas的date_range可以直接生成连续的小时级时间序列,指定生成744个点就刚好对应31天。这样绘图时X轴还能直接显示日期/天数,可读性拉满:

import pandas as pd
import matplotlib.pyplot as plt

# 读取Y数据,squeeze()确保数据是一维的(如果Excel里是单列的话)
y = pd.read_excel(r'C:/Users/user/Documents/project/Data/Data-y.xlsx').squeeze()

# 生成744小时的时间序列,起始日期可以随便设,频率选'H'(小时)
x = pd.date_range(start='2024-01-01', periods=744, freq='H')

plt.figure(figsize=(8, 5))
plt.plot(x, y, 'b')

# 设置X轴刻度为每天的起始点,显示"Day 1"到"Day 31",旋转标签避免重叠
plt.xticks(x[::24], [f'Day {i+1}' for i in range(31)], rotation=45)

plt.xlabel('Days')
plt.ylabel('Y Value')
plt.title('Hourly Data Over 31 Days')
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

方案2:用数值生成均匀分布的X轴

如果不需要时间标签,只是要0到31的数值轴,用np.linspace就可以精准生成744个均匀分布的点,它会自动帮你计算正确的步长,而且包含两端的数值:

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

y = pd.read_excel(r'C:/Users/user/Documents/project/Data/Data-y.xlsx').squeeze()

# 生成从0到31的744个均匀点,完美匹配Y轴长度
x = np.linspace(0, 31, 744)

plt.figure(figsize=(8, 5))
plt.plot(x, y, 'b')

# 设置X轴刻度为每天的整数点,显示0到31
plt.xticks(np.arange(0, 32, 1))

plt.xlabel('Days')
plt.ylabel('Y Value')
plt.title('Hourly Data Over 31 Days')
plt.show()

这两种方法都能保证X轴的长度和你的744个Y数据完全一致,而且X轴的刻度会清晰显示31天的标记,完美解决你之前的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:04:08