【问题标题】:Drawing lattices and graphs with Networkx使用 Networkx 绘制网格和图形
【发布时间】:2013-08-03 12:41:06
【问题描述】:

我想用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 元素的符号。如何做到这一点?

【问题讨论】:

    标签: python matplotlib networkx


    【解决方案1】:

    这是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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 2017-07-06
      • 2012-03-13
      • 1970-01-01
      • 2023-01-13
      相关资源
      最近更新 更多