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

matplotlib绘制pandas子图仅最后一个显示x轴标签如何解决

问题描述

绘制多张子图时仅最后一张子图显示x轴日期标签,目标是所有子图下方均正常展示日期类x轴标签。
当前运行效果:
运行效果截图
原始实现代码:

import matplotlib.pyplot as plt

axes = dfDiscoverNerPivot.plot.line(x="date",subplots=True, legend=True, fontsize=8, grid=False, figsize=(10,25), linewidth=3)
plt.xticks(rotation=90)

for ax in axes.flatten():
    ax.axhline(5000, color='k', linestyle='--')
    ax.legend(loc='upper center')

plt.show()

运行环境:Google Colab,使用pandas、matplotlib库开发。

问题原因

matplotlib绘制纵向排列的子图时,默认会隐藏非最底部子图的x轴刻度标签,避免标签重叠;全局方法plt.xticks()仅会对当前激活的最后一个子图生效,因此只有最后一张子图显示旋转后的日期标签。

修复方案

遍历所有子图轴对象时,单独为每个子图强制开启x轴底部标签显示,同时设置刻度旋转角度,最后加布局自动适配避免标签截断。
修复后完整代码:

import matplotlib.pyplot as plt

axes = dfDiscoverNerPivot.plot.line(
    x="date",
    subplots=True,
    legend=True,
    fontsize=8,
    grid=False,
    figsize=(10,25),
    linewidth=3
)

for ax in axes.flatten():
    ax.axhline(5000, color='k', linestyle='--')
    ax.legend(loc='upper center')
    # 强制显示当前子图x轴标签,设置90度旋转
    ax.tick_params(axis='x', labelbottom=True, rotation=90)

# 自动调整布局,避免标签、标题被截断
plt.tight_layout()
plt.show()

如果子图垂直间距不足导致标签和上一张子图内容重叠,可以在绘图时传入子图间距参数,修改plot.line的参数为:

axes = dfDiscoverNerPivot.plot.line(
    x="date",
    subplots=True,
    subplot_kw={'hspace': 0.6}, # 调整子图垂直间距,数值越大间距越大
    legend=True,
    fontsize=8,
    grid=False,
    figsize=(10,25),
    linewidth=3
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:18:20