8

我想用 画一个正方形格子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) to (i+1,j)应该取决于A我已经拥有的矩阵的 i,j 元素的符号。这个怎么做?

4

1 回答 1

13

这是一个显式的图形构造函数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')

在此处输入图像描述

于 2013-08-02T13:48:22.783 回答