Spaces:
Sleeping
Sleeping
import gradio as gr | |
from pyvis.network import Network | |
import base64 | |
def create_knowledge_graph(): | |
# Создаем граф с pyvis | |
net = Network( | |
height="600px", | |
width="100%", | |
bgcolor="#222222", | |
font_color="white", | |
cdn_resources="in_line" # Все необходимые JS/CSS будут встроены в HTML | |
) | |
# Добавляем узлы (концепции) | |
nodes = ["Python", "Gradio", "Pyvis", "Data Science", "Machine Learning"] | |
for node in nodes: | |
net.add_node(node, label=node) | |
# Добавляем ребра (связи между концепциями) | |
edges = [ | |
("Python", "Gradio"), | |
("Python", "Pyvis"), | |
("Python", "Data Science"), | |
("Data Science", "Machine Learning"), | |
("Gradio", "Machine Learning"), | |
("Pyvis", "Data Science") | |
] | |
for source, target in edges: | |
net.add_edge(source, target) | |
# Генерируем HTML-код графа | |
html_content = net.generate_html(notebook=False) | |
# Кодируем HTML в base64 и формируем data URL | |
html_bytes = html_content.encode("utf-8") | |
b64_html = base64.b64encode(html_bytes).decode("utf-8") | |
data_uri = f"data:text/html;base64,{b64_html}" | |
# Возвращаем ссылку, которая откроется в новой вкладке | |
return f'<a href="{data_uri}" target="_blank">Открыть граф в новой вкладке</a>' | |
with gr.Blocks() as demo: | |
gr.Markdown("# Открытие графа в новой вкладке") | |
generate_button = gr.Button("Создать граф") | |
html_out = gr.HTML() | |
generate_button.click(fn=create_knowledge_graph, inputs=[], outputs=html_out) | |
demo.launch(inline=True) | |