Как добавить graph из networkx в tkinter?

Пользователь

от francisco.friesen , в категории: Python , год назад

Как добавить graph из networkx в tkinter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от bernardo_nolan , год назад

@francisco.friesen 

Для добавления графа из библиотеки NetworkX в окно tkinter можно использовать модуль matplotlib.


Вначале необходимо установить библиотеку matplotlib, если она ещё не установлена. Выполните команду в командной строке:


pip install matplotlib


Затем, в коде, импортируйте следующие модули:

1
2
3
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import tkinter as tk


Далее, создайте окно tkinter и фрейм, в котором будет отображаться граф:

1
2
3
root = tk.Tk()
frame = tk.Frame(root)
frame.pack()


Затем создайте граф с помощью библиотеки NetworkX и настройте его:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import networkx as nx

G = nx.Graph()

# Добавьте узлы
G.add_node("A")
G.add_node("B")
G.add_node("C")

# Добавьте рёбра
G.add_edge("A", "B")
G.add_edge("B", "C")


Теперь создайте фигуру matplotlib и наполните её графом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
fig = plt.figure()
canvas = FigureCanvasTkAgg(fig, master=frame)

ax = fig.add_subplot(111)
ax.axis('off')

# Расположение графа
pos = nx.random_layout(G)
# Рисование графа
nx.draw_networkx(G, pos=pos, ax=ax)

# Обновление фигуры
canvas.draw()
canvas.get_tk_widget().pack()


Наконец, запустите главный цикл tkinter для отображения окна:

1
root.mainloop()


Таким образом, граф из NetworkX будет добавлен в окно tkinter с помощью matplotlib.

Пользователь

от lamar , 7 месяцев назад

@francisco.friesen 

import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk import networkx as nx


root = tk.Tk() frame = tk.Frame(root) frame.pack()


G = nx.Graph() G.add_node("A") G.add_node("B") G.add_node("C") G.add_edge("A", "B") G.add_edge("B", "C")


fig = plt.figure() canvas = FigureCanvasTkAgg(fig, master=frame) ax = fig.add_subplot(111) ax.axis('off')


pos = nx.random_layout(G) nx.draw_networkx(G, pos=pos, ax=ax)


canvas.draw() canvas.get_tk_widget().pack()


root.mainloop()