Spaces:
Running
Running
import gradio as gr | |
from pyvis.network import Network | |
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) | |
# Экранируем двойные кавычки для корректной вставки в srcdoc | |
html_content_escaped = html_content.replace('"', '"') | |
# Оборачиваем HTML в iframe | |
iframe_code = f''' | |
<iframe | |
srcdoc="{html_content_escaped}" | |
width="100%" | |
height="600" | |
frameborder="0" | |
></iframe> | |
''' | |
return iframe_code | |
with gr.Blocks() as demo: | |
gr.Markdown("# Граф Знаний с Pyvis и Gradio (Blocks)") | |
# Кнопка для генерации графа | |
generate_button = gr.Button("Создать граф") | |
# Выводим результат в виде HTML | |
graph_html = gr.HTML() | |
# Связываем кнопку с функцией | |
generate_button.click( | |
fn=create_knowledge_graph, | |
inputs=[], | |
outputs=graph_html | |
) | |
demo.launch() | |