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

如何调整matplotlib图表尺寸解决x轴日期标签重叠问题

Matplotlib x轴日期标签重叠优化方案

针对时间序列折线图x轴日期标签重叠的问题,可通过以下几种方案解决,按需选择即可:


方案1:直接旋转标签(零改动快速生效)

不需要修改原有数据处理逻辑,仅需在绘图代码中增加标签旋转和布局调整代码,45度倾斜是兼顾可读性和空间利用率的常用选择:

import matplotlib.pyplot as plt

plt.plot(df['Update'], df['Pb95'], label='sales', linewidth=3) 

plt.title('Sales by Date')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()

# 新增优化代码
plt.xticks(rotation=45, ha='right')  # 标签旋转45度,右对齐匹配刻度位置
plt.tight_layout()  # 自动调整画布边距,避免旋转后的标签被截断

plt.show()

如果横向空间特别紧张,可将旋转角度改为90让标签垂直显示。


方案2:转换日期类型+自动刻度控制(长期使用更规范)

当前Update列是字符串格式,matplotlib会默认将每一个字符串值都作为x轴刻度输出,是标签拥挤的核心原因。先将列转换为标准日期格式,matplotlib会自动按合理间隔生成刻度,从根源减少标签数量:

import matplotlib.pyplot as plt
import pandas as pd

# 第一步:将字符串格式的日期转为pandas标准日期类型
df['Update'] = pd.to_datetime(df['Update'], format='%m/%d/%Y')

plt.plot(df['Update'], df['Pb95'], label='sales', linewidth=3) 

plt.title('Sales by Date')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()

# 第二步:自动优化日期标签显示
plt.gcf().autofmt_xdate()  # 自动完成标签旋转、对齐,适配日期显示
plt.tight_layout()

# 可选:自定义刻度间隔和显示格式
# import matplotlib.dates as mdates
# # 每7天(1周)显示一个刻度
# plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=7))
# # 日期显示为「月-日」格式
# plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))

plt.show()

该方案额外的好处是会自动按时间先后顺序排列x轴,不会出现字符串排序导致的日期顺序错乱问题,适合所有时间序列绘图场景。


其他可选优化

如果数据跨度特别长、日期数量极多,还可以选择:

  • 调整画布尺寸:在绘图前加plt.figure(figsize=(10,5))增大横向绘图空间
  • 标签精简显示:缩短日期字符串长度,比如只显示月-日,省略重复的年份
  • 减少刻度密度:通过xticks参数手动指定需要显示的刻度位置,过滤掉非关键日期标签

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:48:25