File size: 1,909 Bytes
cd9ea1c
 
 
 
 
 
 
 
 
 
5829a54
cd9ea1c
5829a54
cd9ea1c
 
 
 
5829a54
cd9ea1c
 
 
 
 
 
 
 
 
 
 
5829a54
cd9ea1c
 
5829a54
 
 
 
 
 
 
 
 
 
 
 
 
 
cd9ea1c
 
5829a54
 
 
cd9ea1c
 
5829a54
 
 
 
 
 
 
 
 
cd9ea1c
5829a54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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()