如何使用 Python Bokeh 库制作事件图?
How to Make Event Plot using Python Bokeh Library?
我正在尝试使用散景库制作事件图。我知道可以使用 matplotlib.pyplot.eventplot,但我需要 Bokeh
中可用的更多交互功能
我在这个Website中看到了这样一张图表的截图。所以在散景中一定是可能的。
如何使用散景库制作类似的图?
这个想法很基础。您可以使用图形对象的 rect()
函数,您必须在其中定义 x
、y
和 width
。在您的情况下,该图应该具有 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)
输出
评论
正如我在评论中提到的那样,您共享的图形是使用内部使用 bokeh
的 dask package
生成的。他们使用了我上面描述的相同想法,但当然 dask 项目在图上提供的远不止这个,而且 maby 解决了不止一个问题。
我正在尝试使用散景库制作事件图。我知道可以使用 matplotlib.pyplot.eventplot,但我需要 Bokeh
中可用的更多交互功能我在这个Website中看到了这样一张图表的截图。所以在散景中一定是可能的。
如何使用散景库制作类似的图?
这个想法很基础。您可以使用图形对象的 rect()
函数,您必须在其中定义 x
、y
和 width
。在您的情况下,该图应该具有 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)
输出
评论
正如我在评论中提到的那样,您共享的图形是使用内部使用 bokeh
的 dask package
生成的。他们使用了我上面描述的相同想法,但当然 dask 项目在图上提供的远不止这个,而且 maby 解决了不止一个问题。