У меня есть приложение, которое я разрабатываю, и возвращение кадра данных Pandas np.nan с DatetimeIndex - это верный результат.Для запроса нет данных, и мне нужен график для формирования оси с DatetimeIndex без точек данных.Это нарушает представление matplotlib об ограничивающем прямоугольнике, который получает свои пределы от данных, приведенных к плавающим числам.
Я думаю, что должен быть обходной путь, который выглядит некрасиво, как вызов для установки ограничений bbox,но до сих пор я не понял этого.
В настоящее время я объединяю фрейм данных с другим, имеющим нули, а затем перебираю столбцы, чтобы установить стиль линии на Нет для фиктивного столбца.
# dummy must also be moved to the end of the dataframe to not
# not break the legend in my app.
ax.plot(df)
dummy_line = ax.get_lines()[-1].set_linestyle('None')
Это действительно уродливый хак, который делает код более сложным и заставляет специальные функции абстрагировать это.
Есть ли более простой способ обойти встроенную функциональность Matplotlib?
Пример
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
index = pd.date_range('2019-01-01T12:00:00', '2019-01-2T12:00:00', freq='3T')
data = [np.nan for i in index]
df = pd.DataFrame({'test':data}, index=index)
fig, ax = plt.subplots(nrows=1)
ax.plot(df)
plt.show()
# Ultimately I want to use date Locators which offer a different
# error b/c there's too many ticks.
Информация о версии
- matplotlib 2.0.2 np113py36_0
- Python 3.x