Python networkx节点间距

时间:2019-02-20 16:15:41

标签: python networkx

我有1000个不同的名称,每个名称都构成一个节点。每个名称可以与0..1000个其他名称连接无限次。我想用两个节点之间的距离与它们连接的次数成反比的方式来绘制它。

示例:

from sys import path

from django.urls import include
from rest_framework.urlpatterns import format_suffix_patterns
from app import views
from django.conf.urls import url
from django.contrib import admin

from rest_framework import routers
router = routers.DefaultRouter()



router.register('user_details', UserDetailViewSet)
urlpatterns = [path('api/', include(router.urls)), ...]
urlpatterns = [

    url(r'^admin/', admin.site.urls),
    url(r'^User_details/', views.UsersList.as_view()),
    url(r'^User_details/(?P<pk>[0-9]+)/', views.UserDetail.as_view()),
    url(r'^userpost_details/', views.UsersPostList.as_view()),

]
urlpatterns = format_suffix_patterns(urlpatterns)

'node1' : ['node2','node2','node2','node2','node2','node3'] 'node2' : ['node1','node1','node1','node1','node1'] 'node3' : ['node1'] node1应该挤在一起,node2应该更远。

有可能吗?目前,我正在使用以下代码进行绘图:

node3

import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() G.add_nodes_from(grapharr.keys()) for k in grapharr: for j in grapharr[k]: G.add_edge(k,j) nx.draw_networkx(G, **options) 是一个dict结构,其中键是节点,值是包含特定节点连接的数组。

1 个答案:

答案 0 :(得分:1)

在一般情况下是不可能的。看这张图:

enter image description here

想象一下,中心节点之间有千个连接,但是“正方形”节点之间只有一个连接。您将如何绘制它们?

无论如何,您可以将连接级别设置为边缘权重,并使用力导向的布局来尝试创建最佳布局(当然不是100%最佳)。在networkx中,有: