У меня есть следующая матрица расстояний:
delta =
[[ 0. 0.71370845 0.80903791 0.82955157 0.56964983 0. 0. ]
[ 0.71370845 0. 0.99583115 1. 0.79563006 0.71370845
0.71370845]
[ 0.80903791 0.99583115 0. 0.90029133 0.81180111 0.80903791
0.80903791]
[ 0.82955157 1. 0.90029133 0. 0.97468433 0.82955157
0.82955157]
[ 0.56964983 0.79563006 0.81180111 0.97468433 0. 0.56964983
0.56964983]
[ 0. 0.71370845 0.80903791 0.82955157 0.56964983 0. 0. ]
[ 0. 0.71370845 0.80903791 0.82955157 0.56964983 0. 0. ]]
И я пытаюсь использовать библиотеку networkx, чтобы представить это в виде графика. Это мой код:
import networkx as nx
G = nx.from_numpy_matrix(delta)
pos = nx.random_layout(G)
plt.figure(figsize=(7, 7))
for k, p in pos.iteritems():
plt.scatter(p[0], p[1], marker='o', c=colors[k], s=50, edgecolor='None')
lgd = plt.legend(markers, labels, numpoints=1, bbox_to_anchor=(1.17, 0.5))
plt.tight_layout()
plt.axis('equal')
pt.show()
Однако то, что я вижу, не то, что я ожидал. Например, рассмотрим этот вывод:
Из delta
узел 1 находится в той же точке, что и узлы 6 и 7, и далеко от узла 4. Я не вижу в выходном графике. Кроме того, сверхурочно я его запускаю, результат другой. Это ожидаемо, но расстояние, похоже, не соблюдается. На следующем графике, например, изменились расстояния от 1 до 6,7 и 4.
Я не могу понять почему.