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

问题描述 投票:0回答:1

是否有一种简单的方法来在matplotlib中对齐不同种类的时间序列的两个子图(图和条图)?我使用熊猫包装纸,因为我正在处理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轴标签上的可见性(但如果存在,则保留网格)
python pandas matplotlib time-series visualization
1个回答
0
投票

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

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

感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.