ipydagred3 is an ipywidgets library designed for drawing and interacting with directed acyclic graphs (DAGs) directly within JupyterLab environments using the dagre-d3 JavaScript library. It enables dynamic creation and modification of graph structures from Python, including control over node/edge styles, tooltips, and click event handling. The library is currently in a 'Beta' development status (version 0.4.1) and provides interactive features for data pipeline visualization and similar applications.
Warnings
gotcha Widgets not rendering in JupyterLab/Notebook due to incorrect extension setup or version mismatches.
Fix: Ensure `ipywidgets` and `jupyterlab_widgets` (for JupyterLab) or `widgetsnbextension` (for classic Notebook) are correctly installed and enabled in your environment. Check the `ipywidgets` installation documentation for your specific Jupyter version. A common fix is `jupyter labextension install @jupyter-widgets/jupyterlab-manager` for JupyterLab 3.x and earlier, or ensuring `ipywidgets` is installed in both the kernel and JupyterLab environments if they are separate.
gotcha Performance degradation when visualizing very large or complex graphs.
Fix: While `ipydagred3` is built for dynamic graphs, rendering extremely large datasets might be slow due to the underlying JavaScript rendering engine and data transfer. Consider simplifying the graph, using filtering, or exploring alternative server-side rendering solutions for extremely large graphs. This is a common limitation for browser-based widget libraries.
breaking Breaking changes in the underlying `ipywidgets` library might affect `ipydagred3`'s functionality or require updates.
Fix: Refer to the `ipywidgets` migration guides (e.g., from 7.x to 8.0) and ensure your `ipywidgets` installation is compatible with the `ipydagred3` version. Widget authors (including `ipydagred3`) often need to update their code to support new `ipywidgets` versions.
gotcha Incompatibility with Python versions older than 3.8 or newer Jupyter environments that drop support for older Python versions.
Fix: Ensure your Python environment is version 3.8 or newer. Be aware that some newer Jupyter Notebook/Lab releases may drop support for older Python versions (e.g., Jupyter Notebook 7.x dropped Python 3.8 support). Align your Python and Jupyter versions for optimal compatibility.
Install
pip install ipydagred3Install with pip
Imports
Graph
from ipydagred3 import Graph
Quickstart
This quickstart demonstrates how to create a simple directed graph with nodes and edges, customize their appearance, and display it within a Jupyter Notebook or JupyterLab environment. The `display()` function from `IPython.display` is used to render the widget.
from ipydagred3 import Graph
from IPython.display import display
# Create a new graph
g = Graph()
# Add nodes
g.add_node("A", label="Start Node")
g.add_node("B", label="Process B", shape='rect')
g.add_node("C", label="End Node")
# Add edges
g.add_edge("A", "B", label="step 1")
g.add_edge("B", "C", label="step 2", style='stroke-dasharray: 5, 5;')
# Display the graph in a Jupyter environment
display(g)