如何使用 Python Bokeh 库制作事件图?

How to Make Event Plot using Python Bokeh Library?

我正在尝试使用散景库制作事件图。我知道可以使用 matplotlib.pyplot.eventplot,但我需要 Bokeh

中可用的更多交互功能

我在这个Website中看到了这样一张图表的截图。所以在散景中一定是可能的。

如何使用散景库制作类似的图?

这个想法很基础。您可以使用图形对象的 rect() 函数,您必须在其中定义 xywidth。在您的情况下,该图应该具有 datetime 格式的 x-axis。宽度是你在任务上的持续时间。

最小示例

import pandas as pd
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

df = pd.DataFrame({'y':[1, 2, 3, 4], 
                   'start':[0, 1, 1, 10], 
                   'duration':[1, 2, 1, 5], 
                   'color':['green', 'red', 'blue', 'red']
                  })
>>>df
   y  start  duration  color
0  1      0         1  green
1  2      1         2    red
2  3      1         1   blue
3  4     10         5    red

p = figure(
    width=350,
    height=350,
    title="Task Stream",
    toolbar_location="above",
    x_axis_type="datetime",
)

p.rect(
    source=ColumnDataSource(df),
    x="start",
    y="y",
    width="duration",
    height=0.4,
    fill_color="color",
    line_color="color",
)
show(p)

输出

评论

正如我在评论中提到的那样,您共享的图形是使用内部使用 bokehdask package 生成的。他们使用了我上面描述的相同想法,但当然 dask 项目在图上提供的远不止这个,而且 maby 解决了不止一个问题。