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( '
"""