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

2024-04-19 06:17:32 发布

您现在位置:Python中文网/ 问答频道 /正文

在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()

example

结果在视觉上不是很好,保持代码的简单性和:

  • 将顶部打印中的数据点与底部打印中的条形图垂直对齐
  • 与第一个共享条形图的轴,并完全删除顶部图的x轴标签上的可见性(但保留网格)

Tags: 方法import类型pandasplotmatplotlibas时间
1条回答
网友
1楼 · 发布于 2024-04-19 06:17:32

根据评论中提出的想法,我认为这是最简单的解决方案(放弃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()

solution

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

谢谢你的帮助

相关问题 更多 >