Holoviews 是否能够在图中用 0 填充缺失的日期?

Is Holoviews able to fill missing dates with 0 in plot?

我有一个简单的条形图,其中聚合时间序列数据作为值。 x 轴上的变量被格式化为 Datetime 并由 Holoviews 正确解释。 Y 轴显示一天中观察到的事件的聚合计数。

是否可以向 Holoviews 添加一个选项,这将为不属于观察数据的缺失日期留下 "empty bars"?因为在那个特定的日子里没有任何事件。根据我的截图,2017-06-23 和 2017-06-25 到 2017-06-28 应该出现高度为零的条。

条形图用于绘制分类数据(类别不多)

您有时间戳,因此通常线图或散点图更适合绘制较长的时间段。


这里有 2 种条形图的可能解决方案

1) 您可以 使用 .redim.values() 来指定您希望在您的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:

* 将日期设置为数据框的索引
* 然后从 pandas.
df.asfreq('D')
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



结果图: