|
import gradio as gr |
|
import igraph as ig |
|
import plotly.graph_objects as go |
|
|
|
def create_plotly_tree(): |
|
|
|
g = ig.Graph.Tree(7, 2) |
|
lay = g.layout('rt') |
|
|
|
|
|
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.Plot(), |
|
title="Interactive Tree Visualization" |
|
) |
|
return iface |
|
|
|
with gr.Blocks() as demo: |
|
with gr.Column(): |
|
tree_interface = setup_interface() |
|
textbox = gr.Textbox() |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
|
demo.launch() |