Hướng dẫn python networkx - mạng pythonx

Hướng dẫn này có thể giúp bạn bắt đầu làm việc với NetworkX.

Show

Tạo biểu đồ#

Tạo một biểu đồ trống không có nút và không có cạnh.

>>> import networkx as nx
>>> G = nx.Graph()

Theo định nghĩa,

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
6 là một tập hợp các nút (đỉnh) cùng với các cặp nút được xác định (được gọi là các cạnh, liên kết, v.v.). Trong NetworkX, các nút có thể là bất kỳ đối tượng có thể băm nào, ví dụ: chuỗi văn bản, hình ảnh, đối tượng XML, biểu đồ khác, đối tượng nút tùy chỉnh, v.v.hashable object e.g., a text string, an image, an XML object, another Graph, a customized node object, etc.

Ghi chú

Đối tượng Python từ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
7 không được phép sử dụng làm nút. Nó xác định xem các đối số chức năng tùy chọn đã được chỉ định trong nhiều chức năng.

Nodes#

Biểu đồ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 có thể được phát triển theo nhiều cách. NetworkX bao gồm nhiều chức năng và phương tiện tạo đồ thị để đọc và ghi biểu đồ ở nhiều định dạng. Để bắt đầu mặc dù chúng tôi sẽ xem xét các thao tác đơn giản. Bạn có thể thêm một nút cùng một lúc,graph generator functions and facilities to read and write graphs in many formats. To get started though we’ll look at simple manipulations. You can add one node at a time,

hoặc thêm các nút từ bất kỳ thùng chứa nào, chẳng hạn như danh sáchiterable container, such as a list

>>> G.add_nodes_from([2, 3])

Bạn cũng có thể thêm các nút cùng với các thuộc tính nút nếu container của bạn mang lại 2 bộ dữ liệu của mẫu

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
9:

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])

Các thuộc tính nút được thảo luận thêm dưới đây.below.

Các nút từ một biểu đồ có thể được kết hợp vào một biểu đồ khác:

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 hiện chứa các nút của
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 dưới dạng các nút của
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8. Ngược lại, bạn có thể sử dụng biểu đồ
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 làm nút trong
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8.

Biểu đồ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 hiện chứa
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 dưới dạng nút. Tính linh hoạt này rất mạnh mẽ vì nó cho phép biểu đồ đồ thị, đồ thị của các tệp, biểu đồ của các hàm và nhiều hơn nữa. Điều đáng suy nghĩ về cách cấu trúc ứng dụng của bạn để các nút là các thực thể hữu ích. Tất nhiên, bạn luôn có thể sử dụng một mã định danh duy nhất trong
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 và có một từ điển riêng biệt được mã hóa bởi định danh đến thông tin nút nếu bạn thích.

Ghi chú

Đối tượng Python từ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
7 không được phép sử dụng làm nút. Nó xác định xem các đối số chức năng tùy chọn đã được chỉ định trong nhiều chức năng.

Edges#

Biểu đồ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 có thể được phát triển theo nhiều cách. NetworkX bao gồm nhiều chức năng và phương tiện tạo đồ thị để đọc và ghi biểu đồ ở nhiều định dạng. Để bắt đầu mặc dù chúng tôi sẽ xem xét các thao tác đơn giản. Bạn có thể thêm một nút cùng một lúc,

>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*

hoặc thêm các nút từ bất kỳ thùng chứa nào, chẳng hạn như danh sách

>>> G.add_edges_from([(1, 2), (1, 3)])

Bạn cũng có thể thêm các nút cùng với các thuộc tính nút nếu container của bạn mang lại 2 bộ dữ liệu của mẫu

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
9:ebunch of edges. An ebunch is any iterable container of edge-tuples. An edge-tuple can be a 2-tuple of nodes or a 3-tuple with 2 nodes followed by an edge attribute dictionary, e.g.,
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
9. Edge attributes are discussed further below.

>>> G.add_edges_from(H.edges)

Các thuộc tính nút được thảo luận thêm dưới đây.

Các nút từ một biểu đồ có thể được kết hợp vào một biểu đồ khác:

>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 hiện chứa các nút của
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 dưới dạng các nút của
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8. Ngược lại, bạn có thể sử dụng biểu đồ
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 làm nút trong
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8.

>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3

Ghi chú

Đối tượng Python từ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
7 không được phép sử dụng làm nút. Nó xác định xem các đối số chức năng tùy chọn đã được chỉ định trong nhiều chức năng.

>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]

Biểu đồ >>> H = nx.path_graph(10) >>> G.add_nodes_from(H) 8 có thể được phát triển theo nhiều cách. NetworkX bao gồm nhiều chức năng và phương tiện tạo đồ thị để đọc và ghi biểu đồ ở nhiều định dạng. Để bắt đầu mặc dù chúng tôi sẽ xem xét các thao tác đơn giản. Bạn có thể thêm một nút cùng một lúc,

hoặc thêm các nút từ bất kỳ thùng chứa nào, chẳng hạn như danh sách

>>> G.add_nodes_from([2, 3])
0

Bạn cũng có thể thêm các nút cùng với các thuộc tính nút nếu container của bạn mang lại 2 bộ dữ liệu của mẫu

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
9:nbunch. An nbunch is any of:
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
7 (meaning all nodes), a node, or an iterable container of nodes that is not itself a node in the graph.

>>> G.add_nodes_from([2, 3])
1

Các thuộc tính nút được thảo luận thêm dưới đây.

Các nút từ một biểu đồ có thể được kết hợp vào một biểu đồ khác:

>>> G.add_nodes_from([2, 3])
2

>>> H = nx.path_graph(10) >>> G.add_nodes_from(H) 8 hiện chứa các nút của >>> G.add_edge(1, 2) >>> e = (2, 3) >>> G.add_edge(*e) # unpack edge tuple* 1 dưới dạng các nút của >>> H = nx.path_graph(10) >>> G.add_nodes_from(H) 8. Ngược lại, bạn có thể sử dụng biểu đồ >>> G.add_edge(1, 2) >>> e = (2, 3) >>> G.add_edge(*e) # unpack edge tuple* 1 làm nút trong >>> H = nx.path_graph(10) >>> G.add_nodes_from(H) 8.

Biểu đồ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 hiện chứa
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1 dưới dạng nút. Tính linh hoạt này rất mạnh mẽ vì nó cho phép biểu đồ đồ thị, đồ thị của các tệp, biểu đồ của các hàm và nhiều hơn nữa. Điều đáng suy nghĩ về cách cấu trúc ứng dụng của bạn để các nút là các thực thể hữu ích. Tất nhiên, bạn luôn có thể sử dụng một mã định danh duy nhất trong
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 và có một từ điển riêng biệt được mã hóa bởi định danh đến thông tin nút nếu bạn thích.

>>> G.add_nodes_from([2, 3])
3

Bạn không nên thay đổi đối tượng nút nếu băm phụ thuộc vào nội dung của nó.

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 cũng có thể được phát triển bằng cách thêm một cạnh tại một thời điểm,

bằng cách thêm một danh sách các cạnh,

Chúng tôi đã tìm thấy sức mạnh này khá hữu ích, nhưng sự lạm dụng của nó có thể dẫn đến hành vi đáng ngạc nhiên trừ khi một người quen thuộc với Python. Nếu nghi ngờ, hãy xem xét sử dụng

>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
1 để có được biểu đồ truyền thống hơn với các nhãn số nguyên.

Truy cập các cạnh và hàng xóm#

Ngoài các chế độ xem

>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
2 và
>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
3, có thể truy cập vào các cạnh và hàng xóm bằng cách sử dụng ký hiệu đăng ký.

>>> G.add_nodes_from([2, 3])
4

Bạn có thể nhận/đặt các thuộc tính của một cạnh bằng ký hiệu đăng ký nếu cạnh đã tồn tại.

>>> G.add_nodes_from([2, 3])
5

Kiểm tra nhanh tất cả các cặp (nút, kề) được đạt được bằng cách sử dụng

>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
4 hoặc
>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
5. Lưu ý rằng đối với các biểu đồ không mong muốn, phép lặp liền kề nhìn thấy mỗi cạnh hai lần.

>>> G.add_nodes_from([2, 3])
6

Truy cập thuận tiện vào tất cả các cạnh đạt được với thuộc tính cạnh.

>>> G.add_nodes_from([2, 3])
7

Thêm các thuộc tính vào biểu đồ, nút và cạnh#

Các thuộc tính như trọng lượng, nhãn, màu sắc hoặc bất kỳ đối tượng Python nào bạn thích, có thể được gắn vào đồ thị, nút hoặc cạnh.

Mỗi biểu đồ, nút và cạnh có thể giữ các cặp thuộc tính khóa/giá trị trong một từ điển thuộc tính được liên kết (các phím phải có thể băm). Theo mặc định, chúng trống, nhưng các thuộc tính có thể được thêm hoặc thay đổi bằng cách sử dụng

>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
6,
>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
7 hoặc thao tác trực tiếp của các từ điển thuộc tính có tên
>>> G.add_edges_from([(1, 2), (1, 3)])
>>> G.add_node(1)
>>> G.add_edge(1, 2)
>>> G.add_node("spam")        # adds node "spam"
>>> G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
>>> G.add_edge(3, 'm')
8,
>>> G.add_edges_from([(1, 2), (1, 3)])
4 và
>>> G.add_edges_from([(1, 2), (1, 3)])
5 cho biểu đồ
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8.

Thuộc tính đồ thị#

Gán các thuộc tính biểu đồ khi tạo biểu đồ mới

>>> G.add_nodes_from([2, 3])
8

Hoặc bạn có thể sửa đổi các thuộc tính sau

>>> G.add_nodes_from([2, 3])
9

Thuộc tính nút#

Thêm các thuộc tính nút bằng cách sử dụng

>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
2,
>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
3 hoặc
>>> G.add_edges_from([(1, 2), (1, 3)])
4

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
0

Lưu ý rằng việc thêm một nút vào

>>> G.add_edges_from([(1, 2), (1, 3)])
4 không thêm nó vào biểu đồ, sử dụng
>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
6 để thêm các nút mới. Tương tự cho các cạnh.

Thuộc tính cạnh#

Thêm/thay đổi các thuộc tính cạnh bằng cách sử dụng ký hiệu

>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
7,
>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
8 hoặc đăng ký.

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
1

Thuộc tính đặc biệt

>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
9 phải là số vì nó được sử dụng bởi các thuật toán yêu cầu các cạnh có trọng số.

Đồ thị được định hướng#

Lớp

>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
0 cung cấp các phương thức và thuộc tính bổ sung cụ thể cho các cạnh được định hướng, ví dụ:
>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
1,
>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
2,
>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
3,
>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
4, v.v. và
>>> DG = nx.DiGraph()
>>> DG.add_edge(2, 1)   # adds the nodes in order 2, 1
>>> DG.add_edge(1, 3)
>>> DG.add_edge(2, 4)
>>> DG.add_edge(1, 2)
>>> assert list(DG.successors(2)) == [1, 4]
>>> assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]
9 mặc dù đôi khi có thể cảm thấy không nhất quán.

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
2

Một số thuật toán chỉ hoạt động cho các biểu đồ được định hướng và các thuật toán khác không được xác định rõ cho các biểu đồ có hướng. Thật vậy, xu hướng gộp các biểu đồ định hướng và không mong muốn lại với nhau là nguy hiểm. Nếu bạn muốn coi một biểu đồ được định hướng là không được hướng đến một số phép đo, bạn có thể nên chuyển đổi nó bằng cách sử dụng

>>> G.add_nodes_from([2, 3])
00 hoặc với

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
3

Multigraphs#

NetworkX cung cấp các lớp cho các biểu đồ cho phép nhiều cạnh giữa bất kỳ cặp nút nào. Các lớp

>>> G.add_nodes_from([2, 3])
01 và
>>> G.add_nodes_from([2, 3])
02 cho phép bạn thêm cùng một cạnh hai lần, có thể với dữ liệu cạnh khác nhau. Điều này có thể mạnh mẽ cho một số ứng dụng, nhưng nhiều thuật toán không được xác định rõ trên các biểu đồ đó. Trường hợp kết quả được xác định rõ, ví dụ:
>>> G.add_nodes_from([2, 3])
03 chúng tôi cung cấp chức năng. Nếu không, bạn nên chuyển đổi thành một biểu đồ tiêu chuẩn theo cách làm cho phép đo được xác định rõ.

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
4

Trình tạo đồ thị và hoạt động đồ thị#

Ngoài việc xây dựng biểu đồ nút theo từng nút hoặc từng cạnh, chúng cũng có thể được tạo bởi

1. Áp dụng các hoạt động đồ thị cổ điển, chẳng hạn như:#

>>> G.add_nodes_from([2, 3])
04(G, nbunch)

Trả về các sơ đồ con gây ra trên các nút trong nbunch.

>>> G.add_nodes_from([2, 3])
05(G, H[, rename, name])

Kết hợp đồ thị G và H.

>>> G.add_nodes_from([2, 3])
06(G, H)

Kết hợp đồ thị G và H.

>>> G.add_nodes_from([2, 3])
07(G, H)

Trả lại sản phẩm Cartesian của G và H.

>>> G.add_nodes_from([2, 3])
08(G, H)

Kết hợp đồ thị G với H bằng cách kết hợp các nút và cạnh thành một biểu đồ.

>>> G.add_nodes_from([2, 3])
09(G)

Trả về phần bổ sung đồ thị của G.

>>> G.add_nodes_from([2, 3])
10(G[, with_data])

Trả về một bản sao của đồ thị G với tất cả các cạnh bị xóa.

>>> G.add_nodes_from([2, 3])
11(graph)

Trả về một chế độ xem không mong muốn của biểu đồ

>>> G.add_nodes_from([2, 3])
12.

>>> G.add_nodes_from([2, 3])
13(graph)

Trả về một chế độ xem có hướng của biểu đồ

>>> G.add_nodes_from([2, 3])
12.

2. Sử dụng cuộc gọi đến một trong các biểu đồ nhỏ cổ điển, ví dụ:#

3. Sử dụng trình tạo (mang tính xây dựng) cho biểu đồ cổ điển, ví dụ:#

>>> G.add_nodes_from([2, 3])
15(n[, create_using])

Trả về đồ thị hoàn chỉnh

>>> G.add_nodes_from([2, 3])
16 với N nút.

>>> G.add_nodes_from([2, 3])
17(n1, n2[, create_using])

Trả về đồ thị Bipartite hoàn chỉnh

>>> G.add_nodes_from([2, 3])
18.

>>> G.add_nodes_from([2, 3])
19(m1, m2[, create_using])

Trả về biểu đồ barbell: hai biểu đồ hoàn chỉnh được kết nối bởi một đường dẫn.

>>> G.add_nodes_from([2, 3])
20(m, n[, create_using])

Trả về biểu đồ Lollipop;

>>> G.add_nodes_from([2, 3])
21 được kết nối với
>>> G.add_nodes_from([2, 3])
22.

như vậy:

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
5

4. Sử dụng trình tạo đồ thị ngẫu nhiên, ví dụ,#

>>> G.add_nodes_from([2, 3])
23(n, p[, seed, directed])

Trả về biểu đồ ngẫu nhiên \ (g_ {n, p} \), còn được gọi là biểu đồ erdős-rényi hoặc biểu đồ nhị thức.\(G_{n,p}\) random graph, also known as an Erdős-Rényi graph or a binomial graph.

>>> G.add_nodes_from([2, 3])
24(n, k, p[, seed])

Trả về một biểu đồ thế giới nhỏ Watts Watts Strogatz.

>>> G.add_nodes_from([2, 3])
25(n, m[, seed, ...])

Trả về một biểu đồ ngẫu nhiên bằng cách sử dụng tệp đính kèm ưu tiên của Barabási, Albert

>>> G.add_nodes_from([2, 3])
26(n, p1, p2[, seed])

Trả về một biểu đồ tôm hùm ngẫu nhiên.

như vậy:

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
6

5. Đọc một biểu đồ được lưu trữ trong một tệp bằng các định dạng biểu đồ phổ biến#

NetworkX hỗ trợ nhiều định dạng phổ biến, chẳng hạn như danh sách cạnh, danh sách liền kề, GML, GraphML, Pickle, Leda và các định dạng khác.

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
7

Để biết chi tiết về định dạng đồ thị, xem đọc và ghi biểu đồ và cho các hàm tạo biểu đồ, hãy xem Trình tạo biểu đồReading and writing graphs and for graph generator functions see Graph generators

Phân tích đồ thị#

Cấu trúc của

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
8 có thể được phân tích bằng các hàm lý thuyết đồ thị khác nhau như:

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
8

Một số chức năng với đầu ra lớn lặp qua (nút, giá trị) 2-n-n-nế. Chúng dễ dàng được lưu trữ trong cấu trúc

>>> G.add_nodes_from([2, 3])
28 nếu bạn mong muốn.

>>> G.add_nodes_from([
...     (4, {"color": "red"}),
...     (5, {"color": "green"}),
... ])
9

Xem thuật toán để biết chi tiết về thuật toán đồ thị được hỗ trợ.Algorithms for details on graph algorithms supported.

Vẽ đồ thị#

NetworkX không chủ yếu là gói vẽ đồ thị nhưng bản vẽ cơ bản với matplotlib cũng như giao diện để sử dụng gói phần mềm graphviz nguồn mở được bao gồm. Đây là một phần của mô -đun NetworkX.Drawing và sẽ được nhập nếu có thể.networkx.drawing module and will be imported if possible.

Đầu tiên nhập giao diện cốt truyện Matplotlib, (PYLAB cũng hoạt động)

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
0

Để kiểm tra xem việc nhập

>>> G.add_nodes_from([2, 3])
29 có thành công rút không

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
1

(PNG, Hires.png, PDF)

Hướng dẫn python networkx - mạng pythonx

Khi vẽ đến một màn hình tương tác. Lưu ý rằng bạn có thể cần phải phát hành một matplotlib

Lệnh nếu bạn không sử dụng matplotlib ở chế độ tương tác.

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2

(PNG, Hires.png, PDF)

Hướng dẫn python networkx - mạng pythonx

Khi vẽ đến một màn hình tương tác. Lưu ý rằng bạn có thể cần phải phát hành một matplotlib

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
3

(PNG, Hires.png, PDF)

Hướng dẫn python networkx - mạng pythonx

Khi vẽ đến một màn hình tương tác. Lưu ý rằng bạn có thể cần phải phát hành một matplotlib

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
4

Lệnh nếu bạn không sử dụng matplotlib ở chế độ tương tác.

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
5

Bạn có thể tìm thấy các tùy chọn bổ sung thông qua

>>> G.add_nodes_from([2, 3])
31 và bố cục thông qua
>>> G.add_nodes_from([2, 3])
32. Bạn có thể sử dụng nhiều vỏ với
>>> G.add_nodes_from([2, 3])
33.Drawing for additional details.

  • Để lưu bản vẽ vào một tệp, ví dụ, sử dụng

  • Hàm này ghi vào tệp

    >>> G.add_nodes_from([2, 3])
    
    34 trong thư mục cục bộ. Nếu Graphviz và PyGraphviz hoặc PYDOT, có sẵn trên hệ thống của bạn, bạn cũng có thể sử dụng
    >>> G.add_nodes_from([2, 3])
    
    35 hoặc
    >>> G.add_nodes_from([2, 3])
    
    36 để có được vị trí nút hoặc viết biểu đồ ở định dạng DOT để xử lý thêm.

  • Xem bản vẽ để biết thêm chi tiết.