网络图表不显示Python中的边缘箭头

时间:2017-09-11 07:10:38

标签: python graph networkx adjacency-matrix

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

results = Work.search(
        'example', :ranker => "expr('sum((4*lcs+2*(min_hit_pos==1)+exact_hit)*user_weight)*1000+bm25*20')",
        :select => 'min(weight()) as min_weight, max(weight()) as max_weight'),
        :middleware => ThinkingSphinx::Middlewares::RAW_ONLY

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

我能够显示连接,但即使我将参数指定为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) A)的情况下实现目标的方法?

enter image description here

2 个答案:

答案 0 :(得分:4)

在某些时候,我对网络绘图设施缺乏正确的箭头支持感到非常恼火,并编写了我自己的箭头支持,同时保持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)

答案 1 :(得分:3)

我设法得到"箭头"。从挖掘其他堆栈溢出问题(here,here)开始,似乎这是使用matplotlib获取箭头的最佳方法。

var tag = document.getElementById("hiddentag").innerHTML;

output