本节用于介绍pm4py中的可视化函数,包括可视化bpmn、petri、性能图谱、变迁系统等。
1.函数概述
本次主要介绍Pm4py中一些常见的可视化函数,总览如下表:
函数名 | 说明 |
view_alignments(log, aligned_traces[, format]) | 可视化对齐方法 |
view_bpmn(bpmn_graph[, format, bgcolor, rankdir]) | 查看BPMN图 |
view_case_duration_graph(log[, format, ...]) | 可视化案例持续时间图 |
view_dfg(dfg, start_activities, end_activities) | 查看(复合)DFG |
view_dotted_chart(log[, format, attributes, ...]) | 显示虚线图表 |
view_events_distribution_graph(log[, ...]) | 显示指定维度中事件的分布 |
view_events_per_time_graph(log[, format, ...]) | 可视化每个时间的事件图 |
view_footprints(footprints[, format]) | 可视化足迹矩阵 |
view_heuristics_net(heu_net[, format, bgcolor]) | 查看启发式网络 |
view_network_analysis(network_analysis[, ...]) | 可视化网络分析 |
view_object_graph(ocel, graph[, format, ...]) | 在屏幕上可视化对象图形 |
view_ocdfg(ocdfg[, annotation, act_metric, ...]) | 使用所提供的配置查看OC-DFG(以对象为中心的直接跟随图)。 |
view_ocpn(ocpn[, format, bgcolor, rankdir]) | 在屏幕上可视化以对象为中心的Petri网 |
view_performance_dfg(dfg, start_activities, ...) | 查看性能DFG |
view_performance_spectrum(log, activities[, ...]) | 显示性能频谱 |
view_petri_net(petri_net[, initial_marking, ...]) | 查看(复合) Petri网 |
view_prefix_tree(trie[, format, bgcolor]) | 查看前缀树 |
view_process_tree(tree[, format, bgcolor, ...]) | 查看流程树 |
view_sna(sna_metric[, variant_str]) | 表示SNA度量(html) |
view_transition_system(transition_system[, ...]) | 查看变迁系统 |
此外,还有保存可视化图形的方法,这里只需要将view_XXX()改为save_vis_XXX()方法即可,例如,可视化方法view_bpmn()改为可保存的可视化方法为save_vis_bpmn().
2.函数方法介绍
2.1 可视化Petri网
pm4py.vis.view_petri_net(petri_net: PetriNet, initial_marking: Marking | None = None, final_marking: Marking | None = None, format: str = 'png', bgcolor: str = 'white', decorations: Dict[Any, Any] | None = None, debug: bool = False, rankdir: str = 'LR')
说明:可视化Petri网输入参数:
petri_net(PetriNet)–petri网
initial_marking–初始标记
final_marking–最终标记
format(str)–输出图片的格式(如果提供了html,则使用GraphvizJS在html页面中呈 现可视化效果)
bgcolor(str)–可视化的背景色(默认值:白色)
装饰–与Petri网元素相关的装饰(颜色、标签)
debug(bool)–启用/禁用调试模式的布尔值(显示位置和转换的名称)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
net, im, fm = pm4py.discover_petri_net_inductive(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_petri_net(net, im, fm, format='svg')
2.2 可视化性能DFG
pm4py.vis.view_performance_dfg(dfg: dict, start_activities: dict, end_activities: dict, format: str = 'png', aggregation_measure='mean', bgcolor: str = 'white', rankdir: str = 'TB')
说明:可视化性能DFG输入参数:
dfg(dict)–dfg对象
start_activities(dict)–启动活动
end_activities(dict)–结束活动
format(str)–输出图片的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化效果)
aggregation_measure(str)–聚合度量值(默认值:均值):均值、中值、最小值、最大值、总和、标准差
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
performance_dfg, start_activities, end_activities = pm4py.discover_performance_dfg(dataframe, case_id_key='case:concept:name', activity_key='concept:name', timestamp_key='time:timestamp')
pm4py.view_performance_dfg(performance_dfg, start_activities, end_activities, format='svg')
2.3 可视化DFG
pm4py.vis.view_dfg(dfg: dict, start_activities: dict, end_activities: dict, format: str = 'png', bgcolor: str = 'white', max_num_edges: int = 9223372036854775807, rankdir: str = 'TB')
说明:可视化DFG输入参数:
dfg(dict)–dfg对象
start_activities(dict)–启动活动
end_activities(dict)–结束活动
format(str)–输出图片的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化效果)
bgcolor(str)–可视化的背景色(默认值:白色)
max_num_edges(int)–要在图中表示的最大边数
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
dfg, start_activities, end_activities = pm4py.discover_dfg(dataframe, case_id_key='case:concept:name', activity_key='concept:name', timestamp_key='time:timestamp')
pm4py.view_dfg(dfg, start_activities, end_activities, format='svg')
2.4 可视化流程树
pm4py.vis.view_process_tree(tree: ProcessTree, format: str = 'png', bgcolor: str = 'white', rankdir: str = 'TB')
说明:可视化流程树输入参数:
tree(ProcessTree)–流程树
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
process_tree = pm4py.discover_process_tree_inductive(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_process_tree(process_tree, format='svg')
2.5 可视化BPMN
pm4py.vis.view_bpmn(bpmn_graph: BPMN, format: str = 'png', bgcolor: str = 'white', rankdir: str = 'LR')
说明:可视化BPMN输入参数:
bpmn_graph(bpmn)–bpmn图
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
bpmn_graph = pm4py.discover_bpmn_inductive(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_bpmn(bpmn_graph)
2.6 可视化启发式网
pm4py.vis.view_heuristics_net(heu_net: HeuristicsNet, format: str = 'png', bgcolor: str = 'white')
说明:可视化启发式网输入参数:
heu_net(启发式网络)–启发式网络
format(str)–可视化的格式
bgcolor(str)–可视化的背景色(默认值:白色)
示例代码:
import pm4py
heu_net = pm4py.discover_heuristics_net(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_heuristics_net(heu_net, format='svg')
2.7 可视化点图
pm4py.vis.view_dotted_chart(log: EventLog | DataFrame, format: str = 'png', attributes=None, bgcolor: str = 'white', show_legend: bool = True)
说明:可视化点图。虚线是事件日志中不同维度的事件的经典可视化。事件日志中的每个事件都对应于一个点。尺寸投影在具有:-X轴的图形上:第一个尺寸的值在那里表示Y轴:第二个维度的值在那里表示。-颜色:对于虚线图的点,第三维度的值表示为不同的颜色。
这些值可以是字符串、数字或日期值,并由虚线进行相应的管理。虚线图表可以建立在不同的属性上。点图的一个方便选择是可视化案例和事件在一段时间内的分布,有以下选择:-XX:事件的时间戳。-Y轴:事件日志中事例的索引。-颜色:事件的活动。
上述选择允许识别视觉模式,例如:-批次。-箱子到达率的变化。-案例完成率的变化。输入参数:
log–事件日志
format(str)–图像格式
attributes–应该用于构造点图的属性。如果“无”,将显示默认的虚线图:x轴:时间y轴:事例(按事件日志中的发生顺序)颜色:活动。对于自定义属性,使用形式为[x轴属性、y轴属性、颜色属性]的属性列表,例如[“concept:name”、“org:resource”、“concept:name”])
bgcolor(str)–虚线图中使用的背景色
show_legend(bool)–boolean(启用/禁用显示图例)
示例代码:
import pm4py
pm4py.view_dotted_chart(dataframe, format='svg')
pm4py.view_dotted_chart(dataframe, attributes=['time:timestamp', 'concept:name', 'org:resource'])
2.8 表示SNA度量
pm4py.vis.view_sna(sna_metric: SNA, variant_str: str | None = None)
说明:表示SNA度量(.html)
输入参数:
sna_metric(sna)–度量值
variant_str–要使用的变量(默认值:pyvis)
示例代码:
import pm4py
metric = pm4py.discover_subcontracting_network(dataframe, resource_key='org:resource', timestamp_key='time:timestamp', case_id_key='case:concept:name')
pm4py.view_sna(metric)
2.9 可视化案例持续时间图
pm4py.vis.view_case_duration_graph(log: EventLog | DataFrame, format: str = 'png', activity_key='concept:name', timestamp_key='time:timestamp', case_id_key='case:concept:name')
说明:可视化案例持续时间图
输入参数:
log–log对象
format(str)–可视化的格式(png、svg…)
activity_key(str)–要用作活动的属性
case_id_key(str)–要用作案例标识符的属性
timestamp_key(str)–要用作时间戳的属性
示例代码:
import pm4py
pm4py.view_case_duration_graph(dataframe, format='svg', activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
2.10 可视化每个时间的事件图
pm4py.vis.view_events_per_time_graph(log: EventLog | DataFrame, format: str = 'png', activity_key='concept:name', timestamp_key='time:timestamp', case_id_key='case:concept:name')
说明:可视化每个时间的事件图。
输入参数:
log–log对象
format(str)–可视化的格式(png、svg…)
activity_key(str)–要用作活动的属性
case_id_key(str)–要用作案例标识符的属性
timestamp_key(str)–要用作时间戳的属性
示例代码:
import pm4py
pm4py.view_events_per_time_graph(dataframe, format='svg', activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
2.11 性能图谱
pm4py.vis.view_performance_spectrum(log: EventLog | DataFrame, activities: List[str], format: str = 'png', activity_key: str = 'concept:name', timestamp_key: str = 'time:timestamp', case_id_key: str = 'case:concept:name', bgcolor: str = 'white')
说明:显示性能谱。性能谱是流程执行中不同活动之间经过的时间的流程性能的一种新颖可视化。性能谱最初描述于:
Denisov, Vadim, et al. “The Performance Spectrum Miner: Visual Analytics for Fine-Grained Performance Analysis of Processes.” BPM (Dissertation/Demos/Industry). 2018.
输入参数:
perf_spectrum–性能谱
format(str)–可视化的格式(png、svg…)
activity_key(str)–要用于活动的属性
timestamp_key(str)–用于时间戳的属性
case_id_key(str)–要用作案例标识符的属性
activity_key–要用作活动的属性
case_id_key–要用作案例标识符的属性
timestamp_key–要用作时间戳的属性
bgcolor(str)–可视化的背景色(默认值:白色)
示例代码:
import pm4py
pm4py.view_performance_spectrum(dataframe, ['Act. A', 'Act. C', 'Act. D'], format='svg', activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
2.12 显示指定维度中事件的分布
pm4py.vis.view_events_distribution_graph(log: EventLog | DataFrame, distr_type: str = 'days_week', format='png', activity_key='concept:name', timestamp_key='time:timestamp', case_id_key='case:concept:name')
说明:显示指定维度中事件的分布
观察事件随时间的分布,可以推断出有关工作班次、工作日和一年中或多或少繁忙的时期的有用信息输入参数:
log–事件日志
district_type(str)–分布类型(默认值:days_week):-days_month=>获取事件在一个月的天数(从1到31)中的分布-mounts=>获取事件的月份(从1个月到12个月)中的分配-mounts>>获取事件在事件日志的年份中的分布-hunts=>获得事件在一天的小时中的分布(从0到23)-days_week=>获取事件在一周中的天数(从周一到周日)-weeks=>获取事件在全年中的周中的分布(从0至52)
format(str)–可视化的格式(默认值:png)
activity_key(str)–要用作活动的属性
case_id_key(str)–要用作案例标识符的属性
timestamp_key(str)–要用作时间戳的属性
示例代码:
import pm4py
pm4py.view_events_distribution_graph(dataframe, format='svg', distr_type='days_week', activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
2.13 查看OC-DFG
pm4py.vis.view_ocdfg(ocdfg: Dict[str, Any], annotation: str = 'frequency', act_metric: str = 'events', edge_metric='event_couples', act_threshold: int = 0, edge_threshold: int = 0, performance_aggregation: str = 'mean', format: str = 'png', bgcolor: str = 'white', rankdir: str = 'LR')[source]
说明:使用提供的配置查看OC-DFG(以对象为中心的直接跟随图形)。
以对象为中心的直接跟随多重图是单个对象类型的直接跟随图的组合,考虑到以对象为核心的事件日志的实体(即事件、唯一对象、总对象),可以用不同的度量对其进行注释。输入参数:
ocdfg–以对象为中心的直接跟随图
annotation(str)–用于可视化的注释。值:-“频率”:频率注释-“性能”:性能注释
act_metric(str)–用于活动的度量。可用值:-“events”=>事件数(默认值)-“unique_objects”=>唯一对象数-“total_objects“=>总对象数
edge_metric(str)–用于边的度量。可用值:-“event_couples”=>事件对数(默认)-“unique_objects”=>唯一对象数-“total_objects“=>总对象数
act_threshold(int)–应用于活动频率的阈值(默认值:0)。只有频率>=的活动才会保留在图中。
edge_threshold(int)–要应用于边缘频率的阈值(默认为0)。只有频率>=的边才会保留在图形中。
performance_aggregation(str)–用于性能的聚合度量:平均值、中值、最小值、最大值、总和
format(str)–输出可视化的格式(如果提供了html,则GraphvizJS用于在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
ocdfg = pm4py.discover_ocdfg(ocel)
pm4py.view_ocdfg(ocdfg, annotation='frequency', format='svg')
2.14 可视化以对象为中心的petri网
pm4py.vis.view_ocpn(ocpn: Dict[str, Any], format: str = 'png', bgcolor: str = 'white', rankdir: str = 'LR')
说明:可视化以对象为中心的petri网。
输入参数:
ocpn–以对象为中心的Petri网
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
ocpn = pm4py.discover_oc_petri_net(ocel)
pm4py.view_ocpn(ocpn, format='svg')
2.15 查看OC-DFG
pm4py.vis.view_object_graph(ocel: OCEL, graph: Set[Tuple[str, str]], format: str = 'png', bgcolor: str = 'white', rankdir: str = 'LR')
说明:可视化对象图。
输入参数:
ocel(ocel)–以对象为中心的事件日志
graph–对象图
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
rankdir(str)–设置图形的方向(“LR”表示从左到右;“TB”表示从上到下)
示例代码:
import pm4py
ocel = pm4py.read_ocel('trial.ocel')
obj_graph = pm4py.ocel_discover_objects_graph(ocel, graph_type='object_interaction')
pm4py.view_object_graph(ocel, obj_graph, format='svg')
2.16 可视化网络分析
pm4py.vis.view_network_analysis(network_analysis: Dict[Tuple[str, str], Dict[str, Any]], variant: str = 'frequency', format: str = 'png', activity_threshold: int = 1, edge_threshold: int = 1, bgcolor: str = 'white')
说明:可视化网络分析
输入参数:
network_analysis–网络分析
variant(str)–可视化的变体:-频率(如果发现的网络分析包含交互的频率)-性能(如果找到的网络分析包括交互的性能)
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
activity_threshold(int)–要包含的活动的最小出现次数(默认值:1)
edge_threshold(int)–要包含的边的最小出现次数(默认值:1)
bgcolor(str)–可视化的背景色(默认值:白色)
示例代码:
import pm4py
net_ana = pm4py.discover_network_analysis(dataframe, out_column='case:concept:name', in_column='case:concept:name', node_column_source='org:resource', node_column_target='org:resource', edge_column='concept:name')
pm4py.view_network_analysis(net_ana, format='svg')
2.17 可视化变迁系统
pm4py.vis.view_transition_system(transition_system: TransitionSystem, format: str = 'png', bgcolor: str = 'white')
说明:可视化变迁系统
输入参数:
transition_system(TransitionSystem)–过渡系统
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
示例代码:
import pm4py
transition_system = pm4py.discover_transition_system(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_transition_system(transition_system, format='svg')
2.18 可视化前缀树
pm4py.vis.view_prefix_tree(trie: Trie, format: str = 'png', bgcolor: str = 'white')
说明:可视化前缀树
输入参数:
prefix_tree–前缀树
format(str)–可视化的格式(如果提供了html,则使用GraphvizJS在html页面中呈现可视化)
bgcolor(str)–可视化的背景色(默认值:白色)
示例代码:
import pm4py
prefix_tree = pm4py.discover_prefix_tree(dataframe, activity_key='concept:name', case_id_key='case:concept:name', timestamp_key='time:timestamp')
pm4py.view_prefix_tree(prefix_tree, format='svg')
2.19 可视化对齐
pm4py.vis.view_alignments(log: EventLog | DataFrame, aligned_traces: List[Dict[str, Any]], format: str = 'png')
说明:可视化对齐
输入参数:
log–事件日志
aligned_traces–对齐的结果
format(str)–可视化的格式(默认值:png)
示例代码:
import pm4py
log = pm4py.read_xes('tests/input_data/running-example.xes')
net, im, fm = pm4py.discover_petri_net_inductive(log)
aligned_traces = pm4py.conformance_diagnostics_alignments(log, net, im, fm)
pm4py.view_alignments(log, aligned_traces, format='svg')
2.20 可视化足迹矩阵
pm4py.vis.view_footprints(footprints: Tuple[Dict[str, Any], Dict[str, Any]] | Dict[str, Any], format: str = 'png')
说明:可视化足迹矩阵
输入参数:
footprints–footprints
format(str)–
可视化的格式(默认值:png)
示例代码:
import pm4py
log = pm4py.read_xes('tests/input_data/running-example.xes')
fp_log = pm4py.discover_footprints(log)
pm4py.view_footprints(fp_log, format='svg')
如需了解更多,欢迎加入流程挖掘交流群QQ:671290481.