Выровнять по вертикали временные ряды (график и гистограмма), используя одну и ту же ось X в matplotlib - PullRequest
0 голосов
/ 20 февраля 2020

Есть ли простой способ выровнять два вспомогательных участка временного ряда разных видов (plot и barplot) в matplotlib? Я использую оболочку 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 верхнего графика вообще (но сохраняйте сетки при наличии)

1 Ответ

0 голосов
/ 20 февраля 2020

Основываясь на идеях, высказанных в комментариях, я думаю, что это самое простое решение (отказ от 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

С возможным исправлением xticks для случаев с пропущенными значениями, когда xticks не отображаются ежедневно (например, plt.xticks(series.head(3).index)).

Спасибо за помощь!

...