Почему Matplotlib DatetimeIndex отображает несовпадающие даты?Python

Программы на Python
Ответить
Anonymous
 Почему Matplotlib DatetimeIndex отображает несовпадающие даты?

Сообщение Anonymous »

Почему matplotlib иногда округляет до ближайшего месяца, а не в другое время, в зависимости от того, в каком порядке отображаются строки и какие даты используются. ax3 и ax4 особенно интересны, поскольку они не находятся на границе нового месяца. Как я могу заставить поведение ax2 не зависеть от порядка построения графиков?

Код: Выделить всё

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure()
gs = gridspec.GridSpec(4, 1, height_ratios=[1, 1, 1, 1])
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])
ax3 = fig.add_subplot(gs[2])
ax4 = fig.add_subplot(gs[3])

ax1.set_title("Month ends first")
pd.Series([0, 2, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-31", "2026-01-31"])).plot(ax=ax1, c="b")
pd.Series([0, 1, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-15", "2026-01-31"])).plot(ax=ax1, c="r")

ax2.set_title("Middle of month first")
pd.Series([0, 1, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-15", "2026-01-31"])).plot(ax=ax2, c="r")
pd.Series([0, 2, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-31", "2026-01-31"])).plot(ax=ax2, c="b")

ax3.set_title("Not end of month first")
pd.Series([0, 2, 0], pd.DatetimeIndex(["2025-11-28", "2025-12-31", "2026-01-31"])).plot(ax=ax3, c="b")
pd.Series([0, 1, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-15", "2026-01-31"])).plot(ax=ax3, c="r")

ax4.set_title("Not end of month first fence post")
pd.Series([0, 2, 0], pd.DatetimeIndex(["2025-11-27", "2025-12-31", "2026-01-31"])).plot(ax=ax4, c="b")
pd.Series([0, 1, 0], pd.DatetimeIndex(["2025-11-30", "2025-12-15", "2026-01-31"])).plot(ax=ax4, c="r")

plt.show()
Изображение



Подробнее здесь: https://stackoverflow.com/questions/798 ... lign-dates
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»