要在NetworkX中手动放置节点并使用鼠标进行操作,您需要结合matplotlib的图形界面
import networkx as nx
import matplotlib.pyplot as plt
# 创建一个空的有向图
G = nx.DiGraph()
# 添加节点和边
G.add_node(1)
G.add_node(2)
G.add_edge(1, 2)
# 创建一个matplotlib图形
fig, ax = plt.subplots()
# 将NetworkX图绘制到matplotlib图形上
pos = nx.spring_layout(G) # 使用spring布局作为初始节点位置
nx.draw(G, pos, with_labels=True, ax=ax)
# 更新节点位置的函数
def update_node_position(event):
if event.inaxes is not None:
x, y = event.xdata, event.ydata
node = event.artist
node.set_offsets([[x, y]])
fig.canvas.draw()
# 连接鼠标移动事件
fig.canvas.mpl_connect('motion_notify_event', update_node_position)
# 显示图形
plt.show()
在这个例子中,我们首先创建了一个简单的网络图,并使用spring布局为其节点分配了初始位置。然后,我们定义了一个update_node_position
函数,该函数会在鼠标移动时被调用。如果鼠标悬停在节点上,我们会更新节点的位置。
领取专属 10元无门槛券
手把手带您无忧上云