advantages / app.py
trashchenkov's picture
Update app.py
5829a54 verified
raw
history blame
1.91 kB
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()