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

标签 python pandas data-visualization holoviews

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

是否可以向 Holoviews 添加一个选项,为不属于观察数据的缺失日期留下“空栏”?因为那几天没有任何事件。根据我的屏幕截图,2017-06-23和2017-06-25直到2017-06-28应该出现高度为零的栏。

Holoviews

最佳答案

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

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


以下是条形图的 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



结果图:

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

关于python - Holoviews 是否能够在绘图中用 0 填充缺失的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59826392/

相关文章:

r - ggmap 上的 ggplot 带有取决于值的彩色点

d3.js - 我们可以将事件监听器添加到 "Vega-Lite"规范吗?

python - 如何在 django View 中使用参数运行 scrapy 蜘蛛

Python - Ctype.windll.kernel32.CreateThread 参数值

python - 在 Pandas 中连接两个大型数据集的最佳方法

python - 如何基于滚动窗口查找将列附加到 Panda 数据框?

r - 如何在 r 中获取 coplot 的图例?

python - pdb有像gdb一样的布局src吗?

python - 从列中的行中删除 '[]' 和 '()'

python - 使用 Pandas 进行条件切片(优雅的方式)