我有一个简单的条形图,其中聚合时间序列数据作为值。 x 轴上的变量格式为日期时间并由 Holoviews 正确解释。 Y 轴显示一天中观察到的事件的聚合计数。
是否可以向 Holoviews 添加一个选项,为不属于观察数据的缺失日期留下“空栏”?因为那几天没有任何事件。根据我的屏幕截图,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:
* 将日期设置为数据框的索引以及
* 然后做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
结果图:
关于python - Holoviews 是否能够在绘图中用 0 填充缺失的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826392/