python - 网络图在 Python 中不显示沿边的箭头

标签 python graph networkx adjacency-matrix

我有一个 adjacency matrix A 和定义每个节点坐标的数组:

import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
%matplotlib inline  

Import adjacency matrix A[i,j]
A = np.matrix([[0, 1, 1, 0, 0, 1, 0],
               [0, 0, 1, 1, 0, 0, 0],
               [0, 0, 0, 1, 1, 1, 0],
               [0, 0, 0, 0, 1, 1, 0],
               [0, 0, 0, 0, 0, 0, 1], 
               [0, 0, 0, 0, 0, 0, 1],
               [0, 0, 0, 0, 0, 0, 0]])

## Import node coordinates
xy = np.array([[0, 0],
               [-20, 20],
               [17, 27], 
               [-6, 49], 
               [15, 65], 
               [-20, 76],
               [5,  100]]) 

我的目标是绘制显示节点如何相互连接的图表。因此,每条边都应该有一个箭头或双向箭头,指示沿着它前进的方向。

我能够显示连接,但没有箭头,即使我将参数指定为 True

## Draw newtwork
G = nx.from_numpy_matrix(A, xy)
nx.draw_networkx(G, pos=xy, width=3, arrows=True)

您能否建议我一种无需修改输入数据(Axy)即可实现我的目标的方法?

enter image description here

最佳答案

在某些时候,我对 networkx 绘图工具中缺乏适当的箭头支持感到非常恼火,于是自己编写了一个,同时保持 API 几乎相同。可以查到代码here .

enter image description here

import numpy as np
import netgraph

A = np.matrix([[0, 1, 1, 0, 0, 1, 0],
              [0, 0, 1, 1, 0, 0, 0],
              [0, 0, 0, 1, 1, 1, 0],
              [0, 0, 0, 0, 1, 1, 0],
              [0, 0, 0, 0, 0, 0, 1],
              [0, 0, 0, 0, 0, 0, 1],
              [0, 0, 0, 0, 0, 0, 0]])

xy = np.array([[0, 0],
               [-20, 20],
               [17, 27],
               [-6, 49],
               [15, 65],
               [-20, 76],
               [5,  100]])

N = len(A)
node_labels = dict(zip(range(N), range(N)))
netgraph.draw(np.array(A), xy / np.float(np.max(xy)), node_labels=node_labels)

关于python - 网络图在 Python 中不显示沿边的箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150015/

相关文章:

python - 变量名似乎被覆盖

algorithm - 图着色算法

java - 如何检查给定的无向图是否存在传递方向?

以尽可能少的转弯发现 map 上所有字段的算法

python - NetworkX read_dot不继承属性

python - 查找给定图(Python)的所有完整子图的有效方法?

python - 运行时错误:ALBroker::createBroker

python - 从列表中创建唯一项目的子列表

python - 合并共享属性的节点

python - 如何从 func1 中获取 var1 并在 func2 中使用它而不在 func1 中运行两次