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

如何避免matplotlib绘制时间序列散点图时忽略数据中的时间间隔

问题解决方法

问题根源

  1. 调用pd.read_csv读取数据时,date列默认被识别为字符串类型,绘图时会作为分类变量处理,不计算实际日期间隔,直接均匀排列所有分类值,因此2020到2021年之间的空白不会显示
  2. plt.xticks = data.date的写法错误,plt.xticks是调用方法而非可直接赋值的属性,该代码不仅不会生效,还会覆盖原方法导致后续绘图异常。

解决方案

只需将date列转换为pandas的datetime时间类型即可,matplotlib会自动按照时间的实际间隔排布x轴,和Excel的展示效果一致,代码如下:

import matplotlib.pyplot as plt
import pandas as pd

# 方法1:读取数据时直接解析日期列
data = pd.read_csv('data.csv', parse_dates=['date'])

# 方法2:读取数据后手动转换,两种方法选其一即可
# data['date'] = pd.to_datetime(data['date'])

data.plot.scatter('date', 'count')
# 可加旋转刻度防止日期重叠
plt.xticks(rotation=45)
plt.show()

如果需要自定义x轴刻度的显示格式和密度,可以搭配matplotlib的日期工具调整,示例如下:

import matplotlib.dates as mdates

ax = plt.gca()
# 设置主刻度为每月1号
ax.xaxis.set_major_locator(mdates.MonthLocator())
# 设置主刻度显示格式为 年-月
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.xticks(rotation=45)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:27:01