在 matplotlib 中垂直对齐共享相同 x 轴的时间序列(绘图和条形图)

Vertically align time series (plot and barplot) sharing same x-axis in matplotlib

有没有一种简单的方法可以在 matplotlib 中对齐不同类型的时间序列(plot 和 barplot)的两个子图?我使用 pandas 包装器,因为我正在处理 pd.Series 对象:

import pandas as pd
import matplotlib.pyplot as plt
series = pd._testing.makeTimeSeries()
fig, axes = plt.subplots(2, 1)
series.head(3).plot(marker='o', ax=axes[0])
series.head(3).plot.bar(ax=axes[1])
plt.tight_layout()

结果在视觉上不是很好,保持代码简单就好了:

根据评论中的想法,我认为这是最简单的解决方案(放弃pandas API),这正是我需要的:

import pandas as pd
import matplotlib.pyplot as plt
series = pd._testing.makeTimeSeries()
fig, axes = plt.subplots(2, 1, sharex=True)
axes[0].plot(series.head(3), marker='o')
axes[1].bar(series.head(3).index, series.head(3))
plt.tight_layout()

最终修复了 xticks 缺失值的情况,其中 xticks 不是每天绘制的(例如 plt.xticks(series.head(3).index))。

感谢您的帮助!