Visualization ============= pyNTM includes an interactive network visualization that opens in the browser. After running a simulation, call ``visualize()`` on the model object to launch it. Quick Start ----------- :: from pyNTM import Model model = Model.load_model_file('network.csv') model.update_simulation() model.visualize() # opens in default browser model.visualize('output.html') # saves to a specific file The ``visualize()`` method generates a self-contained HTML file with no server or additional dependencies required. Features -------- * **Draggable nodes** - click and drag any node to rearrange the topology for better visibility * **Per-direction utilization coloring** - each interface direction is independently color-coded by utilization * **Toggleable utilization legend** - click a utilization range in the legend to hide/show interfaces at that level * **Demand path tracing** - select a demand to highlight its path; see its traffic, LSPs it rides, and interfaces it transits * **RSVP LSP path tracing** - select an LSP to see its traffic, reserved bandwidth, demands it carries, and path interfaces * **Interface inspection by node** - select a node to list all its interfaces with utilization, demands, and LSPs * **Cross-linked navigation** - click any demand, LSP, or interface in any panel to make it the active selection * **Tooltips** - hover over edges and nodes for interface name, endpoints, capacity, and utilization * **Controls** - toggle physics simulation, show/hide edge arrows, fit to screen, reset node positions Utilization Color Ranges ------------------------ The default utilization color ranges are: =========== ============ Range Color =========== ============ 0-24% Royal Blue 25-49% Forest Green 50-74% Gold 75-89% Orange Red 90-99% Dark Red 100%+ Dark Violet Failed Grey (dashed) =========== ============ These can be customized via the ``InteractiveVisualization`` class if needed:: from pyNTM.interactive_visualization import InteractiveVisualization vis = InteractiveVisualization(model) vis.util_ranges = [ (50, "#0000FF", "0-49%"), (100, "#FF0000", "50-99%"), (None, "#800080", "100%+"), ] vis.create_visualization('custom.html') Deprecated: WeatherMap ---------------------- The legacy ``WeatherMap`` class (``pyNTM.weathermap``) using Dash and dash-cytoscape is deprecated. Use ``model.visualize()`` instead.