使用Networkx绘制格子和图形

9

我想用Networkx绘制一个正方形的点阵。我已经尝试了以下代码:

import matplotlib.pyplot as plt
import numpy as np
import networkx as nx
L=4

G = nx.Graph()

pos={}
for i in np.arange(L*L):
   pos[i] = (i/L,i%L)

nx.draw_networkx_nodes(G,pos,node_size=50,node_color='k')    

plt.show()

然而输出结果只是一个空白图形。我该如何解决这个问题?

另外,我想用箭头将点水平和垂直连接起来。箭头的方向从(i,j)(i+1,j)应该取决于矩阵A中元素的正负性。我已经有了这个矩阵,请问如何实现这个功能?

1个回答

14

这里有一个明确的图形构造器可以用于 nx.grid_2d_graph

G = nx.grid_2d_graph(L,L)
nx.draw(G,node_size=2000)
plt.show()

我们可以将这个无向图修改为符合你的边缘条件的有向图。作为例子,我已经删除了指向原点之外的边缘。你可以根据自己的需要进行调整:

G2 = nx.DiGraph(G)
for edge in G2.edges():
    if edge != tuple(sorted(edge)):
        G2.remove_edge(*edge)

nx.draw_spectral(G2,node_size=600,node_color='w')

输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接