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

Matplotlib绘图中X轴所有月份标签未全部显示的问题

解决Matplotlib显示全部X轴月份标签的问题

关键修正与方案

  • 修正代码拼写错误:你写的ax1.set_xlabels(date)是错误用法,正确方法为ax1.set_xticklabels(date)
  • 强制显示所有标签:Matplotlib默认会自动隐藏重叠标签,需要添加旋转、对齐设置,同时避免日期自动解析导致的优化逻辑:

修改后的完整代码

import matplotlib.pyplot as plt
import numpy as np

# 假设date、net_worth、mental_health为已定义变量
fig, ax1 = plt.subplots()
fig.tight_layout()
x_indexes = np.arange(len(date))

# AX1 配置
color1 = 'darkgreen'
# 用索引作为X轴,避免Matplotlib自动解析日期省略标签
ax1.plot(x_indexes, net_worth,
        color=color1,
        linestyle="-")
ax1.set_ylabel("Net Worth", color=color1, loc='bottom')
ax1.tick_params(axis='y', labelcolor=color1)
# 设置每个索引位置都显示标签
ax1.set_xticks(x_indexes)
ax1.set_xticklabels(date)
# 旋转标签避免重叠,右对齐提升可读性
ax1.tick_params(axis='x', labelrotation=45)
plt.setp(ax1.get_xticklabels(), ha='right')

# AX2 配置
ax2 = ax1.twinx()
color2 = 'darkgoldenrod'
ax2.plot(x_indexes, mental_health,
        color=color2,
        linestyle='--',
        marker='*')
ax2.set_ylabel("Average Mental Health past four weeks", color=color2, loc='top')
ax2.tick_params(axis='y', labelcolor=color2)

plt.show()

补充说明

如果你的date是Pandas Datetime类型,也可以用日期定位器直接控制显示:

from matplotlib.dates import MonthLocator, DateFormatter

# 替换AX1中的X轴设置部分
ax1.plot(date, net_worth, color=color1, linestyle="-")
ax1.xaxis.set_major_locator(MonthLocator())  # 强制显示每个月份
ax1.xaxis.set_major_formatter(DateFormatter('%Y-%m'))  # 设置日期显示格式
ax1.tick_params(axis='x', labelrotation=45)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:50:21