完全に接続されていない可能性のある一連のグラフを扱っています。ノードの孤立したクラスタが存在する可能性があります。Python:グラフの色付け中にnumpy.asarrayでエラーが発生する
各ノードを通過する最短パスの数に基づいて、各ノードにcmap='jet'
からの色を付けたいとします。
コードブロック:
#Given my fragmented graph F, count the shortest paths passing through each node:
def num_spaths(F):
num_spaths = dict.fromkeys(F, 0.0)
spaths = nx.all_pairs_shortest_path(F)
for source in F:
for path in spaths[source].values():
for node in path[1:]:
num_spaths[node] += 1
return num_spaths
num_short_paths=num_spaths(F) #Calling the function on F
my_shortest_paths = num_short_paths.values() #Getting the dict values
nodes = F.nodes() #Storing the nodes in F
#Determining the number of colors
n_color = numpy.asarray([my_shortest_paths[n] for n in nodes])
グラフが接続されていたクラスタが存在していない場合、私は何の問題もありません。グラフがクラスタを有する場合、n_color
は、断片化されたグラフがいくつかのノードを失ったため(例えば、グラフが断片化されている場合、すべてのノードがnodes
に存在するわけではない)、非連続配列になる。
IndexError: list index out of range
は、n_color = numpy.asarray([my_shortest_paths[n] for n in nodes])
という行を指すエラーを生成します。
ノードについてもっと明確にする:
- 非断片化されたグラフ:
nodes=[0,1,2,3...,N]
- 断片化されたグラフ:
nodes=[0,2,3,...,N]
私の質問:どのように考慮して、私のn_color
を構築することができます一部のノードがグラフに表示されないことがありますか?私はこの質問が対応していると思います:どうすればcmap
と一緒に使用するために、離散的ではあるが非連続的なnumpy_array
を構築できますか?
EDIT
は、私はこのようにいくつかの境界を作成し、n_color=[0,5000,10000,15000,20000,25000,30000,35000,40000,45000,50000]
で試してみましたが、その後、私はこのエラーを取得:ValueError: Color array must be two-dimensional
。