DiGraph-自己ループを持つ有向グラフ¶
概要¶
class DiGraph
(incoming_graph_data=None, **attr)¶
有向グラフの基本クラスです。
DiGraphはノードとエッジをオプションのデータ、つまりアトリビュートとともに保持します。
ノードは任意のkey/value属性を持つPythonオブジェクト(ハッシュ化可能)です。
エッジは、オプションのkey/value属性を持つノード間のリンクとして表現されます。
Parameters
-
incoming_graph_data (input graph (optional, default: None)) – グラフの初期化用データです。 None (デフォルト) の場合、emptygraph が作成される。 データは to_networkx_graph() 関数でサポートされている任意のフォーマットで、現在のところ edge list, dict of dicts, dict of lists, NetworkX graph, NumPy matrix or 2d ndarray, SciPy sparse matrix, または PyGraphviz graph.
-
attr (keyword arguments, optional (default= no attributes)) – key=value ペアでグラフに追加するアトリビュートです。
See also
Graph
, MultiGraph
, MultiDiGraph
, OrderedDiGraph
Examples
ノードとエッジを持たない空のグラフ構造 (null graph) を作成する。
>>> G = nx.DiGraph()
G はいくつかの方法で成長させることができる。
ノード:
一度に一つのノードを追加する:
>>> G.add_node(1)
任意のコンテナ(リスト、dict、セット、ファイルからの行や他のグラフからのノードでも)からノードを追加してください。
>>> G.add_nodes_from()>>> G.add_nodes_from(range(100, 110))>>> H = nx.path_graph(10)>>> G.add_nodes_from(H)
文字列と整数に加え、ハッシュ可能な Python オブジェクト (None を除く) はノードを表すことができ、例えばカスタマイズしたノードオブジェクトや、他のグラフも表すことができます。
>>> G.add_node(H)
Edges:
G はエッジを追加することによっても大きくすることができます。
辺を1つ追加、
>>> G.add_edge(1, 2)
辺のリスト、
>>> G.add_edges_from()
あるいは辺のコレクション、
>>> G.add_edges_from(H.edges)
辺がまだグラフに入っていないノードと繋がっていれば自動的にそのノードも追加されます。 デフォルトではこれらは空ですが、add_edge、add_node、またはそれぞれ graph、node、edge という名前の属性辞書を直接操作して追加または変更することが可能です。
>>> G = nx.DiGraph(day="Friday")>>> G.graph{'day': 'Friday'}
add_node(), add_nodes_from() or G.nodes
edge attributes using add_edge(), add_edges_from(), subscriptnotation or G.Nodes
を追加することができます。edges.
Shortcuts:
Many common graph features allow python syntax to speed reporting.多くの一般的なグラフ機能は、レポートを高速化するために python 構文を許可します。
>>> 1 in G # check if node in graphTrue>>> # iterate through nodes>>> len(G) # number of nodes in graph5
多くの場合、グラフのすべてのエッジをトラバースする最良の方法は、近傍を経由することです。近傍性は adjacency-dict G.adj
または G.adjacency()
>>> for n, nbrsdict in G.adjacency():... for nbr, eattr in nbrsdict.items():... if "weight" in eattr:... # Do something useful with the edges... pass
しかし、edge reporting オブジェクトはしばしばより便利です:
>>> for u, v, weight in G.edges(data="weight"):... if weight is not None:... # Do something useful with the edges... pass
報告:
これらと他の雑多なメソッドの詳細は以下を参照してください。
サブクラス(上級):
Graphクラスはdict-of-dict-of-dictデータ構造を使用します。外側のdict(node_dict)はノードでキーとなる隣接情報を保持し、次のdict( adjlist_dict )は隣接情報を表し、隣人でキーを持つedgeデータを保持しています。 内側のdict (edge_attr_dict) はエッジデータを表し、属性名をキーにしたエッジ属性値を保持します。
これら3つのdictはそれぞれ、サブクラスにおいてユーザ定義のdictライクオブジェクトに置き換えることができます。 一般に、ディクトのような機能は維持されるべきですが、余分な機能を追加することも可能です。 ディクテの1つを置き換えるには、そのディクテのような構造のファクトリを保持する class(!) 変数を変更して、新しいグラフクラスを作成します。 変数名 arenode_dict_factory, node_attr_dict_factory, adjlist_inner_dict_factory,adjlist_outer_dict_factory, edge_attr_dict_factory, graph_attr_dict_factory.
node_dict_factory function, (default: dict)
node idをキーとし、dictに記述するノード属性に使用するファクトリ関数です。引数は必要なく、dictのようなオブジェクトを返すべきである
node_attr_dict_factory: function, (default: dict)
属性名でキー設定された属性値を保持するノードattributedictを作成するために使用するファクトリ関数。引数は必要なく、dictのようなオブジェクトを返す。
adjlist_outer_dict_factory, (default: dict)
隣接情報を保持するデータ構造の中で、最も外側のdictをノードで生成するために使われるファクトリ関数。
adjlist_inner_dict_factoryfunction, optional (default: dict)
隣接データを保持する隣接リストdictを作成するために使用するファクトリ関数です。引数は必要なく、ディクトのようなオブジェクトを返します。
graph_attr_dict_factoryfunction, (default: dict)
属性名によってキー設定された属性値を保持するグラフ attributedict を作成するために使用するファクトリ関数です。 to_directed/to_undirected
.By default these methods create a DiGraph/Graph class and you probably want them to create your extension of a DiGraph/Graph.
to_directed_classcallable, (default: DiGraph or MultiDiGraph)
to_directed
メソッドで新しいグラフ構造を作成するためのクラスです。None
の場合、NetworkX クラス (DiGraph または MultiDiGraph) が使用されます。
to_undirected_classcallable, (default: Graph または MultiGraph)
to_undirected
メソッドで新しいグラフ構造を作成するためのクラスです。None
の場合、NetworkX クラス (Graph または MultiGraph) が使用されます。
Examples
すべてのエッジに対して単一の属性 Dict を使用し、エッジ属性を効果的に無効にする低メモリーグラフ クラスを作成します。