import gradio as gr import igraph as ig import plotly.graph_objects as go def create_plotly_tree(): # Create an igraph tree g = ig.Graph.Tree(7, 2) # Example tree lay = g.layout('rt') # Reingold-Tilford layout # Plotly setup edge_x = [] edge_y = [] for edge in g.get_edgelist(): x0, y0 = lay[edge[0]] x1, y1 = lay[edge[1]] edge_x.extend([x0, x1, None]) edge_y.extend([y0, y1, None]) edge_trace = go.Scatter( x=edge_x, y=edge_y, line=dict(width=0.5, color='#888'), hoverinfo='none', mode='lines') node_x = [lay[k][0] for k in range(len(lay))] node_y = [lay[k][1] for k in range(len(lay))] node_trace = go.Scatter( x=node_x, y=node_y, mode='markers', hoverinfo='text', marker=dict(showscale=False, size=10, color='#850', line_width=2)) fig = go.Figure(data=[edge_trace, node_trace], layout=go.Layout( showlegend=False, hovermode='closest', margin=dict(b=0, l=0, t=0, r=0), xaxis=dict(showgrid=False, zeroline=False, showticklabels=False), yaxis=dict(showgrid=False, zeroline=False, showticklabels=False)) ) return fig def setup_interface(): iface = gr.Interface( fn=create_plotly_tree, inputs=[], outputs=gr.Plotly(), title="Interactive Tree Visualization" ) return iface # Launch the interface if __name__ == "__main__": iface = setup_interface() iface.launch()