現在、非ヨーロッパのデータを処理するための最も一般的な方法は、構築することで、グラフを、そしてnetworkxは、グラフデータを構築するための特別なツールです。便利で使いやすい。
最初にリンクを提供:https : //networkx.github.io/
公式ドキュメント: https : //networkx.github.io/documentation/latest/
networkxのインストール方法は、上記の公式ドキュメントに詳細に記載されているため、詳細には触れません。
公式ドキュメントにはいくつかのデモが記載されていますが、便利ですが一般化することはできません。ここで、より一般化されたデモを示します。
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
fig, ax = plt.subplots()
nx.draw(g, ax=ax)
plt.show()
作成したグラフデータはgで、合計4つのノード['1'、 '2'、 '3'、4 '']があることがわかります。視覚化の結果は次のとおりです。
単なるポイントスティックの図で、ノードラベルを追加できます。with_labels= Trueを設定するだけです。
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
fig, ax = plt.subplots()
nx.draw(g, ax=ax, with_labels=True) # show node label
plt.show()
視覚化するたびに、グラフノードの位置がランダムに配置されることに気づきましたか。ノードの位置を固定したい場合、それも可能です:
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
pos_dict = {'1':[ 1, 1], '2': [ 1.5, 0.8], '3': [ 1.7, 2.8], '4': [ 0.6,3.3]}
positions=nx.spring_layout(G, pos=pos_dict)
fig, ax = plt.subplots()
nx.draw(g, ax=ax, with_labels=True, pos=positions)
plt.show()
上記のようにビジュアライゼーションに各ノードの座標を入力して、ノードを位置に固定します。このように、何回実行しても、視覚的な結果は次のようになります。
このように見ただけではまだ十分ではありませんが、ノードを異なる色で表示したい場合はどうすればよいでしょうか。
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
fixed_position = {'1':[ 1, 1], '2': [ 1.5, 0.8], '3': [ 1.7, 2.8], '4': [ 0.6,3.3]}
pos=nx.spring_layout(g, pos=fixed_position)
colors = []
for i in range(g.number_of_nodes()):
if i == 2:
colors.append('#ff0000')
else:
colors.append('#1f7814')
fig, ax = plt.subplots()
nx.draw(g, ax=ax, with_labels=True, pos=pos, node_color=colors) # add colors
plt.show()
色のリストを追加するだけです。効果を見てみましょう。
ノードは前のステップで固定する必要があるため、このステップで示されるグラフの形状は色のみで前のステップと同じです。
色は単なるリストであり、各ノードにバインドされているのではなく、順番にバインドされていることに注意してください。networkxのノードの順序は、先入れ先出しです。たとえば、最初にadd_edge( '1'、 '3')、次にadd_edge( '1'、 '2')とします。このとき、 '2'が3番目のノードであり、 '2'です3番目のノードのラベルのみ。
シーケンス対応の問題を解決するには、最初にadd_nodeを使用できます。