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

Matplotlib绘图如何跳过部分x轴值降低图表数据密度

解决方法

无需修改原始DataFrame,绘图时对传入的数据集做步长为3的行切片即可实现「选取1天、跳过后续2天」的采样规则:切片语法[::3]会从第0行开始,每间隔2行取1行数据,全程不会改动原始存储的全量气象数据。
注意你原有代码中x轴刻度是基于全量数据行数计算的,采样后需要同步调整刻度计算逻辑,避免刻度错位、超出绘图范围。

修改后代码

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
colors = ["Orange", "Blue"]
# 生成临时采样数据,不修改原始weather_data
sampled_weather = weather_data[::3]

for i, col in enumerate(weather_data.columns):
    if col == "Date":
        continue
    ax.plot('Date', col, data=sampled_weather, color=colors[i], label=col)

ax.set_xlabel("Date")
ax.set_ylabel("Temperature (Celsius)")

# 基于采样后的数据量设置15个均匀x轴刻度,避免标签重叠
ax.set_xticks(np.arange(0, sampled_weather.shape[0], sampled_weather.shape[0] / 15))
ax.legend()
fig.autofmt_xdate()
ax.set_title('Time Plot of Weather')

注意事项

  • 切片操作weather_data[::3]返回的是临时对象,不会对原始DataFrame做任何写入修改,完全符合不改动源数据的要求。
  • 如果后续需要调整采样密度,直接修改切片步长即可:比如需要每7天取1天(周粒度采样),把步长改为[::7]即可。
  • 原代码中col is "Date"的写法存在隐患,Python中字符串值相等判断应该用==,避免字符串驻留机制导致的判断失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:24:39