Articles

DiGraph-Directed graficos com auto loops ¶

Overview ¶

ClasseDiGraph(incoming_graph_data=None, **attr)¶

Classe base para gráficos dirigidos.

A DiGraph armazena nós e bordas com dados opcionais, ou atributos.

DiGraphs mantém bordas direcionadas. Auto loops são permitidos, mas múltiplas(paralelas) bordas não são.

Nós podem ser objetos Python arbitrários (hashable) com atributos opcionais de tecla/valor. Por convenção None não é usado como um nó.

Abertos são representados como links entre nós com atributos de chave opcional/valor.

Parâmetros

  • incoming_graph_data (gráfico de entrada (opcional, padrão: Nenhum)) – Dados para inicializar o gráfico. Se None (default) é criado um gráfico vazio. Os dados podem ser qualquer formato que seja suportado pela função to_networkx_graph(), atualmente incluindo lista de bordas,dit de dicts, dit de listas, gráfico NetworkX, matriz NumPy ou 2d ndarray, matriz SciPy esparsa, ou gráfico PyGraphviz.

  • attr (argumentos de palavras-chave, opcional (padrão= sem atributos)) – Atributos a serem adicionados ao gráfico como pares chave=valor.

Ver também

Graph, MultiGraph, MultiDiGraph, OrderedDiGraph

Exemplos

Criar uma estrutura gráfica vazia (um “gráfico nulo”) sem nós e sem bordas.

>>> G = nx.DiGraph()

G pode ser cultivado de várias maneiras.

Nós:

Adicionar um nó de cada vez:

>>> G.add_node(1)

Adicionar os nós de qualquer contentor (uma lista, ditado, setar as linhas de um arquivo ou os nós de outro gráfico).

>>> G.add_nodes_from()>>> G.add_nodes_from(range(100, 110))>>> H = nx.path_graph(10)>>> G.add_nodes_from(H)

Além de strings e inteiros, qualquer objeto hashable Python (exceto Nenhum) pode representar um nó, por exemplo, um objeto de nó personalizado, ou mesmo outro gráfico.

>>> G.add_node(H)

Edges:

G também pode ser cultivado adicionando bordas.

Adicionar uma aresta,

>>> G.add_edge(1, 2)

uma lista de arestas,

>>> G.add_edges_from()

ou uma coleção de arestas,

>>> G.add_edges_from(H.edges)

>

Se algumas arestas conectam nós ainda não no gráfico, os nós são adicionados automaticamente. Não há erros quando adicionamos nós ou bordas já existentes.

Atributos:

Cada gráfico, nó e borda pode manter pares de atributos de chave/valor em um dicionário de atributos associados (as chaves devem ser hashable). Por padrão estas estão vazias, mas podem ser adicionadas ou alteradas usandoadd_edge, add_node ou manipulação direta dos dicionários atribuídos nomeados gráfico, nó e borda respectivamente.

>>> G = nx.DiGraph(day="Friday")>>> G.graph{'day': 'Friday'}

Adicionar atributos de nó usando add_node(), add_nodes_from() ou G.nodes

Adicionar atributos de borda usando add_edge(), add_edges_from(), subscriptnotation, ou G.edges.

Shortcuts:

Muitos recursos gráficos comuns permitem que a sintaxe python acelere os relatórios.

>>> 1 in G # check if node in graphTrue>>> # iterate through nodes>>> len(G) # number of nodes in graph5

Amavelmente a melhor maneira de atravessar todas as bordas de um gráfico é através dos vizinhos.Os vizinhos são relatados como um ditado adjacente G.adj ou 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

Mas o objeto que relata as bordas é frequentemente mais conveniente:

>>> for u, v, weight in G.edges(data="weight"):... if weight is not None:... # Do something useful with the edges... pass

Relatórios:

Para detalhes sobre estes e outros métodos diversos, veja abaixo.

Subclasses (Advanced):

A classe Graph usa uma estrutura de dados ditado de ditado de ditado. A ditado exterior (node_dict) contém informações adjacentes digitadas por nodo. A próxima ditado (adjlist_dict) representa as informações adjacentes e contém dados de borda digitados por vizinho. A dica interna (edge_attr_dict) representa os dados de borda e contém valores de atributos de borda digitados por nomes de atributos.

Cada um destes três dicts pode ser substituído em uma subclasse por um objeto do tipo user defineddict-like. Em geral, as características semelhantes a ditados devem ser bem mantidas, mas características extras podem ser adicionadas. Para substituir um dos ditos, crie uma nova classe gráfica alterando a variável class(!) que mantém a fábrica para aquela estrutura semelhante a um ditado. Os nomes das variáveis arenode_dict_factory, node_attr_dict_factory, adjlist_inner_dict_factory, adjlist_outer_dict_factory, edge_attr_dict_factory e graph_attr_dict_factory.

node_dict_factoryfunction, (default: dict)

Factory function to be used to create the dict containing nodeattributes, keyed by node id.Ele não deve requerer argumentos e retornar um objeto semelhante ao ditado

node_attr_dict_factory: function, (padrão: dict)

Factory function to be used to create the node attributedict which holds attribute values keyed by attribute name.Não deve requerer argumentos e retornar um objeto tipo ditado

adjlist_outer_dict_factoryfunction, (default: dict)

Factory function to be used to create the outer-most dictin the data structure that holds adjacency info keyed by node.

adjlist_inner_dict_factoryfunction, opcional (default: dict)

Factory function to be used to create the adjacency listdict which holds edge data keyed by neighbor. It should require no arguments and return a dict-like object

edge_attr_dict_factoryfunction, opcional (default: dict)

Factory function to be used to create the edge attribuict which holds attribute values keyed by attribute name.Ele não deve requerer argumentos e retornar um objeto tipo dict-like.

graph_attr_dict_factoryfunction, (default: dict)

Factory function to be used to create the graph attributedict which holds attribute values keyed by attribute name. Ele não deve requerer argumentos e retornar um objeto tipo dict-like.

Typically, if your extension doesn’t impact the data structure allmethods will inherited without issue except: to_directed/to_undirected.Por padrão estes métodos criam uma classe DiGraph/Graph e você provavelmente quer que eles criem sua extensão de um DiGraph/Graph. Para facilitar isto nós definimos duas variáveis de classe que você pode definir na sua subclasse.

to_directed_classcallable, (padrão: DiGraph ou MultiDiGraph)

Class para criar uma nova estrutura de gráficos no método to_directed.Se None, uma classe NetworkX (DiGraph ou MultiDiGraph) é usada.

to_undirected_classcallable, (padrão: Graph ou MultiGraph)

Class para criar uma nova estrutura de gráficos no método to_undirected.Se None, uma classe NetworkX (Graph ou MultiGraph) é usada.

Exemplos

Criar uma classe gráfica com pouca memória que efetivamente desativa os edgeattributes usando uma única dita de atributo para todas as arestas. Isto reduz a memória usada, mas você perde atributos de aresta.

Por favor veja ordered para mais exemplos de criação de subclasses de gráficos sobrescrevendo a classe base dict com um objeto semelhante a um dicionário.

Deixe uma resposta

O seu endereço de email não será publicado.