首页 > 解决方案 > 删除pyplot中重叠的x轴标签

问题描述

我是 python 新手,正在尝试绘制一些时间序列数据。我正在使用 pyplot 创建 3 个堆叠折线图,它们具有相同的 x 轴(日期),但 y 轴的比例不同。但是,每个 y 轴以及底部图表的 x 轴都有重叠的标签。有从 0 到 1 生成的标签,以及来自我的数据集的轴标签。如何关闭 y 轴和底部 x 轴上自动生成的 0 到 1 标签?

fig, ax = plt.subplots(3,1,sharex='all', squeeze=False, figsize=(12,8))

ax = fig.add_subplot(3,1,1)
plt.plot(df1['date'], df1['value'])

ax2 = fig.add_subplot(3,1,2)
plt.plot(df2['date'], df2['value'])

ax3 = fig.add_subplot(3,1,3)
plt.plot(df3['date'], df3['value'])
plt.show()

您可以在下图中看到问题。任何帮助是极大的赞赏!

在此处输入图像描述

标签: pythonmatplotlibtime-serieslabel

解决方案


您已经在初始分配中创建了包含所有轴的子图

fig, ax = plt.subplots(3,1,sharex='all', squeeze=False, figsize=(12,8))

因此以下任务

ax = fig.add_subplot(3,1,1)
ax2 = fig.add_subplot(3,1,2)
ax3 = fig.add_subplot(3,1,3)

不仅没有必要,而且它们似乎与已经创建的子图重叠(如果将其更改为 add_subplot(2,1,1) 您会注意到它刚刚开始再次划分图形并将轴相互叠加)。

您想要做的是访问在 plt.subplots() 调用中创建的轴:

fig, ax = plt.subplots(3,1,sharex='all', squeeze=False, figsize=(12,8))

ax[0].plot(df1['date'], df1['value'])

ax[1].plot(df2['date'], df2['value'])

ax[2].plot(df3['date'], df3['value'])
plt.show()

模拟输出:

来自 seaborn 提示数据集的数据

在此处输入图像描述


推荐阅读