如何将bupaR动画流程地图集成到Python Bokeh仪表板,有原生Python方案吗?
两种可行实现方案
完全可以在同一个Bokeh仪表板中实现这两个功能,以下是两种可选的落地方式:
方案1:R+Bokeh混合部署(直接复用现有bupaR动画代码)
该方案无需改写你已经写好的R流程挖掘代码,只需要通过工具链将R生成的动画嵌入Bokeh即可,落地成本最低:
- 先安装依赖:R环境中安装
bupaR、processanimateR、eventdataR、htmlwidgets包,Python环境中安装rpy2 - 修改你现有的Bokeh代码,新增调用R生成动画HTML的逻辑,用Bokeh的
Div组件嵌入自包含的HTML动画,再调整布局即可 - 参考修改代码片段如下:
# 新增导入 from bokeh.models import Div import rpy2.robjects as ro from rpy2.robjects.packages import importr # 新增R动画生成函数 def get_process_animation_html(): # 导入所需R包 importr('bupaR') importr('processanimateR') importr('eventdataR') importr('htmlwidgets') # 执行R代码生成动画并导出为自包含HTML ro.r(''' anim <- animate_process(patients) temp_path <- saveWidget(anim, tempfile(), selfcontained = TRUE) ''') # 读取生成的HTML内容 with open(ro.r('temp_path')[0], 'r', encoding='utf-8') as f: return f.read() # 生成动画嵌入组件 process_anim_div = Div(text=get_process_animation_html(), width=900, height=600) # 修改原有布局,把动画放在聚类图表下方 curdoc().add_root(column( row(inputs, plot), process_anim_div )) curdoc().title = "Clustering + Process Mining"
- 优缺点:优点是直接复用现有R代码,不需要重新开发动画逻辑;缺点是部署环境需要同时安装Python和R两套环境,运行时开销略高。
方案2:Python原生实现(纯Python栈部署)
如果不想依赖R环境,可以基于Python的流程挖掘生态原生实现:
- 用
pm4py包处理事件日志,提取流程的节点、流转边、事件时间序列等数据 - 用Bokeh自带的
GraphRenderer绘制静态流程地图,节点对应流程活动,边对应活动流转路径 - 从事件日志中提取所有案例的流转时间线,生成模拟token流动的轨迹数据,通过Bokeh的
ColumnDataSource存储token位置,调用curdoc().add_periodic_callback定时更新数据源,即可实现和bupaR效果类似的动画流程地图 - 优缺点:优点是纯Python栈,部署简单,运行性能更高;缺点是需要自行开发动画逻辑,定制成本略高于混合方案。
内容的提问来源于stack exchange,提问作者metaltoaster
相关产品推荐
相关产品推荐

