import json from pyvis.network import Network def create_graph(nodes, edges, physics_enabled=True): net = Network(notebook=True, height='100vh', width='100vw', bgcolor='#222222', font_color='white', cdn_resources='remote') for node in nodes: net.add_node( node['id'], label=node['label'], title=node['label'], color='blue' if node['label'] == 'OOP' else 'green' ) for edge in edges: net.add_edge(edge['source'], edge['target'], title=edge['type']) net.force_atlas_2based( gravity=-50, central_gravity=0.01, spring_length=100, spring_strength=0.08, damping=0.4 ) options = { "nodes": { "physics": physics_enabled }, "edges": { "smooth": True }, "interaction": { "hover": True, "zoomView": True }, "physics": { "enabled": physics_enabled, "stabilization": { "enabled": True, "iterations": 200 } } } net.set_options(json.dumps(options)) return net def visualize_graph(json_data, physics_enabled=True): if isinstance(json_data, str): data = json.loads(json_data) else: data = json_data nodes = data['nodes'] edges = data['edges'] net = create_graph(nodes, edges, physics_enabled) html = net.generate_html() html = html.replace("'", "\"") html = html.replace('