У меня проблемы с построением pandas
кадра данных с PeriodIndex
.
В моих данных есть пробелы, и я хочу добиться следующего:
- Пробелыдолжны оставаться пробелы без интерполяции;
- Поскольку каждое значение действует в течение всего периода времени, значение должно отображаться в виде горизонтальной линии в течение всего периода.
- Полезно иметь:нет вертикальной линии на границах периода.
Пример
yearly = pd.DataFrame({'avSpeed': [50, 40, 20, 16]}, index=pd.PeriodIndex(['2014', '2015', '2018', '2019'], freq='A'))
avSpeed
2014 50
2015 40
2018 20
2019 16
Пока мой код
Сделать кадр данных пустым, заполняя пробелыс NaN
(путем повторной выборки с неизменной частотой):
yearly2 = yearly.resample('A').mean()
avSpeed
2014 50.0
2015 40.0
2016 NaN
2017 NaN
2018 20.0
2019 16.0
Постройте это с помощью steps-post
:
plt.figure()
yearly2['avSpeed'].plot(color='red', drawstyle='steps-post')

Чего еще не хватает:
- Основная проблема: значение для 2019 отображается только в начале года.
- Также:присутствуют вертикальные соединительные линии (нежелательные).
РЕДАКТИРОВАТЬ: Решение
Нет необходимости увеличивать данные или даже заполнять их пробелы NaN
!Я могу построить данные как hlines
примерно так:
ax=plt.subplot()
ax.hlines(yearly['avSpeed'], yearly.index.start_time, (yearly.index+1).start_time, 'r') #or: yearly.index.end_time
ax.legend()
plt.show()

Большое спасибо @piRSquared за то, что указал мне правильное направление.