CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-pm4py

Process mining library for discovering, analyzing and visualizing business processes from event data

Pending
Overview
Eval results
Files

visualization.mddocs/

Visualization Functions

Extensive visualization capabilities for process models, statistics, and analysis results. PM4PY provides both viewing and saving options for various visualizations including process models, performance charts, and statistical graphs.

Capabilities

Petri Net Visualization

Visualize Petri net models with markings, annotations, and custom formatting options.

def view_petri_net(petri_net, initial_marking=None, final_marking=None, format='png', **kwargs):
    """
    View Petri net visualization in interactive window or notebook.
    
    Parameters:
    - petri_net (PetriNet): Petri net model to visualize
    - initial_marking (Optional[Marking]): Initial marking for visualization
    - final_marking (Optional[Marking]): Final marking for visualization
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_petri_net(petri_net, initial_marking, final_marking, file_path, **kwargs):
    """
    Save Petri net visualization to file.
    
    Parameters:
    - petri_net (PetriNet): Petri net model
    - initial_marking (Marking): Initial marking
    - final_marking (Marking): Final marking
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

DFG Visualization

Visualize Directly-Follows Graphs with frequency and performance annotations.

def view_dfg(dfg, start_activities=None, end_activities=None, format='png', **kwargs):
    """
    View Directly-Follows Graph visualization.
    
    Parameters:
    - dfg (dict): Directly-follows graph with frequencies
    - start_activities (Optional[dict]): Start activities and frequencies
    - end_activities (Optional[dict]): End activities and frequencies
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_dfg(dfg, start_activities, end_activities, file_path, **kwargs):
    """
    Save DFG visualization to file.
    
    Parameters:
    - dfg (dict): Directly-follows graph
    - start_activities (dict): Start activities and frequencies
    - end_activities (dict): End activities and frequencies
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_performance_dfg(dfg, start_activities=None, end_activities=None, format='png', **kwargs):
    """
    View performance DFG with timing information.
    
    Parameters:
    - dfg (dict): Performance directly-follows graph
    - start_activities (Optional[dict]): Start activities
    - end_activities (Optional[dict]): End activities
    - format (str): Output format
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_performance_dfg(dfg, start_activities, end_activities, file_path, **kwargs):
    """
    Save performance DFG visualization to file.
    
    Parameters:
    - dfg (dict): Performance directly-follows graph
    - start_activities (dict): Start activities
    - end_activities (dict): End activities
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Process Tree Visualization

Visualize hierarchical process tree structures with block compositions.

def view_process_tree(tree, format='png', **kwargs):
    """
    View process tree visualization showing hierarchical structure.
    
    Parameters:
    - tree (ProcessTree): Process tree model
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_process_tree(tree, file_path, **kwargs):
    """
    Save process tree visualization to file.
    
    Parameters:
    - tree (ProcessTree): Process tree model
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

BPMN Visualization

Visualize Business Process Model and Notation (BPMN) diagrams.

def view_bpmn(bpmn_graph, format='png', **kwargs):
    """
    View BPMN model visualization.
    
    Parameters:
    - bpmn_graph (BPMN): BPMN model object
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_bpmn(bpmn_graph, file_path, **kwargs):
    """
    Save BPMN visualization to file.
    
    Parameters:
    - bpmn_graph (BPMN): BPMN model object
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Heuristics Net Visualization

Visualize heuristics nets with dependency information and thresholds.

def view_heuristics_net(heu_net, format='png', **kwargs):
    """
    View heuristics net visualization with dependency metrics.
    
    Parameters:
    - heu_net (HeuristicsNet): Heuristics net object
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_heuristics_net(heu_net, file_path, **kwargs):
    """
    Save heuristics net visualization to file.
    
    Parameters:
    - heu_net (HeuristicsNet): Heuristics net object
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Object-Centric Visualizations

Visualize Object-Centric process models and graphs.

def view_ocdfg(ocdfg, format='png', **kwargs):
    """
    View Object-Centric Directly-Follows Graph visualization.
    
    Parameters:
    - ocdfg (dict): Object-centric DFG structure
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_ocdfg(ocdfg, file_path, **kwargs):
    """
    Save OC-DFG visualization to file.
    
    Parameters:
    - ocdfg (dict): Object-centric DFG structure
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_ocpn(ocpn, format='png', **kwargs):
    """
    View Object-Centric Petri Net visualization.
    
    Parameters:
    - ocpn (OCPN): Object-centric Petri net
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_ocpn(ocpn, file_path, **kwargs):
    """
    Save OC-PN visualization to file.
    
    Parameters:
    - ocpn (OCPN): Object-centric Petri net
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_object_graph(ocel, format='png', **kwargs):
    """
    View object interaction graph from OCEL data.
    
    Parameters:
    - ocel (OCEL): Object-centric event log
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_object_graph(ocel, file_path, **kwargs):
    """
    Save object graph visualization to file.
    
    Parameters:
    - ocel (OCEL): Object-centric event log
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Log-Based Visualizations

Visualize event log characteristics and patterns.

def view_sna(sna, format='png', **kwargs):
    """
    View Social Network Analysis visualization.
    
    Parameters:
    - sna (SNA): Social network analysis object
    - format (str): Output format ('png', 'svg', 'pdf')
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_sna(sna, file_path, **kwargs):
    """
    Save SNA visualization to file.
    
    Parameters:
    - sna (SNA): Social network analysis object
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_dotted_chart(log, **kwargs):
    """
    View dotted chart showing case timeline patterns.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_dotted_chart(log, file_path, **kwargs):
    """
    Save dotted chart to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_performance_spectrum(log, **kwargs):
    """
    View performance spectrum visualization showing case durations.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_performance_spectrum(log, file_path, **kwargs):
    """
    Save performance spectrum to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Statistical Charts

Generate statistical visualizations for process analysis.

def view_case_duration_graph(log, **kwargs):
    """
    View case duration distribution graph.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_case_duration_graph(log, file_path, **kwargs):
    """
    Save case duration graph to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_events_per_time_graph(log, **kwargs):
    """
    View events per time period graph showing activity patterns.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_events_per_time_graph(log, file_path, **kwargs):
    """
    Save events per time graph to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_events_distribution_graph(log, **kwargs):
    """
    View events distribution graph showing frequency patterns.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_events_distribution_graph(log, file_path, **kwargs):
    """
    Save events distribution graph to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Advanced Visualizations

Specialized visualizations for complex analysis tasks.

def view_network_analysis(log, **kwargs):
    """
    View network analysis visualization for organizational mining.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_network_analysis(log, file_path, **kwargs):
    """
    Save network analysis to file.
    
    Parameters:
    - log (Union[EventLog, pd.DataFrame]): Event log data
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_transition_system(transition_system, **kwargs):
    """
    View transition system visualization showing state space.
    
    Parameters:
    - transition_system (TransitionSystem): Transition system model
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_transition_system(transition_system, file_path, **kwargs):
    """
    Save transition system visualization to file.
    
    Parameters:
    - transition_system (TransitionSystem): Transition system model
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_prefix_tree(prefix_tree, **kwargs):
    """
    View prefix tree visualization showing trace structure.
    
    Parameters:
    - prefix_tree (Trie): Prefix tree structure
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_prefix_tree(prefix_tree, file_path, **kwargs):
    """
    Save prefix tree visualization to file.
    
    Parameters:
    - prefix_tree (Trie): Prefix tree structure
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_alignments(alignments, **kwargs):
    """
    View alignment visualization showing trace-model mapping.
    
    Parameters:
    - alignments (List): Alignment results
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_alignments(alignments, file_path, **kwargs):
    """
    Save alignment visualization to file.
    
    Parameters:
    - alignments (List): Alignment results
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_footprints(footprints, **kwargs):
    """
    View footprints visualization for model comparison.
    
    Parameters:
    - footprints (Dict): Footprints structure
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_footprints(footprints, file_path, **kwargs):
    """
    Save footprints visualization to file.
    
    Parameters:
    - footprints (Dict): Footprints structure
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

def view_powl(powl_model, **kwargs):
    """
    View POWL model visualization.
    
    Parameters:
    - powl_model (POWL): POWL model object
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Displays visualization
    """

def save_vis_powl(powl_model, file_path, **kwargs):
    """
    Save POWL visualization to file.
    
    Parameters:
    - powl_model (POWL): POWL model object
    - file_path (str): Output file path
    - **kwargs: Additional visualization parameters
    
    Returns:
    None: Saves visualization to file
    """

Usage Examples

Basic Process Model Visualization

import pm4py

# Load log and discover model
log = pm4py.read_xes('event_log.xes')
net, initial_marking, final_marking = pm4py.discover_petri_net_inductive(log)

# View Petri net in interactive window/notebook
pm4py.view_petri_net(net, initial_marking, final_marking)

# Save Petri net to file
pm4py.save_vis_petri_net(net, initial_marking, final_marking, 'petri_net.png')

# View process tree
tree = pm4py.discover_process_tree_inductive(log)
pm4py.view_process_tree(tree)
pm4py.save_vis_process_tree(tree, 'process_tree.svg')

DFG and Performance Visualization

import pm4py

# Discover and visualize DFG
dfg, start_activities, end_activities = pm4py.discover_dfg(log)
pm4py.view_dfg(dfg, start_activities, end_activities)

# Discover and visualize performance DFG
perf_dfg, start_acts, end_acts = pm4py.discover_performance_dfg(log)
pm4py.view_performance_dfg(perf_dfg, start_acts, end_acts)

# Save DFG visualizations
pm4py.save_vis_dfg(dfg, start_activities, end_activities, 'dfg_frequency.png')
pm4py.save_vis_performance_dfg(perf_dfg, start_acts, end_acts, 'dfg_performance.png')

Statistical Visualizations

import pm4py

# View case duration distribution
pm4py.view_case_duration_graph(log)

# View events per time period
pm4py.view_events_per_time_graph(log)

# View events distribution
pm4py.view_events_distribution_graph(log)

# View dotted chart for timeline analysis
pm4py.view_dotted_chart(log)

# View performance spectrum
pm4py.view_performance_spectrum(log)

# Save all statistical charts
pm4py.save_vis_case_duration_graph(log, 'case_durations.png')
pm4py.save_vis_events_per_time_graph(log, 'events_timeline.png')
pm4py.save_vis_events_distribution_graph(log, 'events_distribution.png')
pm4py.save_vis_dotted_chart(log, 'dotted_chart.png')
pm4py.save_vis_performance_spectrum(log, 'performance_spectrum.png')

Object-Centric Visualizations

import pm4py

# Load OCEL and create visualizations
ocel = pm4py.read_ocel('ocel_data.csv')

# Discover and visualize OC-DFG
ocdfg = pm4py.discover_ocdfg(ocel)
pm4py.view_ocdfg(ocdfg)
pm4py.save_vis_ocdfg(ocdfg, 'ocdfg.png')

# Visualize object interaction graph
pm4py.view_object_graph(ocel)
pm4py.save_vis_object_graph(ocel, 'object_graph.png')

# Discover and visualize OC Petri net
ocpn = pm4py.discover_oc_petri_net(ocel)
pm4py.view_ocpn(ocpn)
pm4py.save_vis_ocpn(ocpn, 'ocpn.png')

Organizational and Social Network Visualization

import pm4py

# Discover handover network
sna = pm4py.discover_handover_of_work_network(log)
pm4py.view_sna(sna)
pm4py.save_vis_sna(sna, 'handover_network.png')

# Network analysis visualization
pm4py.view_network_analysis(log)
pm4py.save_vis_network_analysis(log, 'network_analysis.png')

Advanced Model Visualizations

import pm4py

# Discover and visualize transition system
ts = pm4py.discover_transition_system(log)
pm4py.view_transition_system(ts)
pm4py.save_vis_transition_system(ts, 'transition_system.png')

# Discover and visualize prefix tree
prefix_tree = pm4py.discover_prefix_tree(log)
pm4py.view_prefix_tree(prefix_tree)
pm4py.save_vis_prefix_tree(prefix_tree, 'prefix_tree.png')

# Discover and visualize POWL model
powl_model = pm4py.discover_powl(log)
pm4py.view_powl(powl_model)
pm4py.save_vis_powl(powl_model, 'powl_model.png')

# Visualize BPMN model
bpmn = pm4py.discover_bpmn_inductive(log)
pm4py.view_bpmn(bpmn)
pm4py.save_vis_bpmn(bpmn, 'bpmn_model.png')

Conformance Visualization

import pm4py

# Get alignments and visualize
alignments = pm4py.conformance_diagnostics_alignments(log, net, initial_marking, final_marking)
pm4py.view_alignments(alignments)
pm4py.save_vis_alignments(alignments, 'alignments.png')

# Discover and visualize footprints
footprints = pm4py.discover_footprints(log)
pm4py.view_footprints(footprints)
pm4py.save_vis_footprints(footprints, 'footprints.png')

Visualization with Custom Parameters

import pm4py

# Custom DFG visualization with parameters
pm4py.view_dfg(
    dfg, start_activities, end_activities,
    format='svg',
    bgcolor='white',
    rankdir='TB',  # Top to bottom layout
    fontsize=12,
    edge_color='blue'
)

# Custom Petri net with annotations
pm4py.view_petri_net(
    net, initial_marking, final_marking,
    format='pdf',
    show_labels=True,
    show_initial_marking=True,
    show_final_marking=True,
    decorations={'frequency': True}
)

# High-resolution export
pm4py.save_vis_process_tree(
    tree, 'high_res_tree.png',
    dpi=300,
    bgcolor='transparent',
    fontsize=14
)

Batch Visualization Creation

import pm4py
import os

def create_full_analysis_report(log, output_dir='analysis_output'):
    """Create comprehensive visualization report."""
    
    os.makedirs(output_dir, exist_ok=True)
    
    # Discover models
    net, im, fm = pm4py.discover_petri_net_inductive(log)
    tree = pm4py.discover_process_tree_inductive(log)
    dfg, start_acts, end_acts = pm4py.discover_dfg(log)
    perf_dfg, perf_start, perf_end = pm4py.discover_performance_dfg(log)
    
    # Save process models
    pm4py.save_vis_petri_net(net, im, fm, f'{output_dir}/petri_net.png')
    pm4py.save_vis_process_tree(tree, f'{output_dir}/process_tree.png')
    pm4py.save_vis_dfg(dfg, start_acts, end_acts, f'{output_dir}/dfg.png')
    pm4py.save_vis_performance_dfg(perf_dfg, perf_start, perf_end, f'{output_dir}/perf_dfg.png')
    
    # Save statistical charts
    pm4py.save_vis_case_duration_graph(log, f'{output_dir}/case_durations.png')
    pm4py.save_vis_events_per_time_graph(log, f'{output_dir}/events_timeline.png')
    pm4py.save_vis_dotted_chart(log, f'{output_dir}/dotted_chart.png')
    pm4py.save_vis_performance_spectrum(log, f'{output_dir}/performance_spectrum.png')
    
    # Organizational analysis
    sna = pm4py.discover_handover_of_work_network(log)
    pm4py.save_vis_sna(sna, f'{output_dir}/handover_network.png')
    
    print(f"Analysis report saved to {output_dir}/")

# Create full analysis
create_full_analysis_report(log)

Install with Tessl CLI

npx tessl i tessl/pypi-pm4py

docs

conformance-checking.md

filtering.md

index.md

ml-organizational.md

object-centric.md

process-discovery.md

reading-writing.md

statistics-analysis.md

utilities-conversion.md

visualization.md

tile.json