Может ли Holoviews заполнить недостающие даты 0 в сюжете? - PullRequest
1 голос
/ 20 января 2020

У меня есть простой гистограмма с агрегированными данными временных рядов в качестве значения. Переменная на оси x отформатирована как Datetime и правильно интерпретирована Holoviews. По оси Y отображается совокупное количество наблюдаемых событий в течение дня.

Можно ли добавить опцию к Holoviews, которая будет оставлять «пустые полосы» для пропущенных дней, которые не являются частью наблюдаемых данных? Потому что в эти дни не было никаких событий. Согласно моему скриншоту, должна появиться панель с нулевой высотой на 2017-06-23 и 2017-06-25 до 2017-06-28.

Holoviews

1 Ответ

2 голосов
/ 20 января 2020

Диаграммы предназначены для построения категориальных данных (с не слишком большим количеством категорий)

У вас есть временные метки, поэтому обычно линейный график или график рассеяния лучше подходят для построения более длинных периодов.


Вот 2 возможных решения для гистограмм :

1) Вы можете использовать .redim.values ​​() , чтобы указать какие категории c вы хотели бы иметь на своей оси x:

import pandas as pd
import hvplot.pandas
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')

df = pd.DataFrame({
    'dates': [pd.Timestamp(2020, 1, 1), pd.Timestamp(2020, 1, 3)],
    'values': [30, 10],
})

# specify which categories you would like to show
# if you need a long list, better use a for loop to generate list
new_date_values = [
    pd.Timestamp(2020, 1, 1), 
    pd.Timestamp(2020, 1, 2), 
    pd.Timestamp(2020, 1, 3),
]

# use redim.values() to specify which categories you would like to show
bar_plot = hv.Bars(df)
bar_plot.redim.values(dates=new_date_values)



2) Но, возможно, еще проще изменить вашу df :

* установка даты в качестве индекса вашего фрейма данных и
* , затем выполните df.asfreq ('D') из pandas.

Asfreq ('D') обеспечивает отображение каждой даты в вашем индексе.

# set dates as your index and use .asfreq('D)
df = df.set_index('dates').asfreq('D')

bar_plot = hv.Bars(df)
bar_plot



Итоговый участок:

bar plot also including dates that aren't present in data (so that are 0)

...