Màu chuỗi f python

Theo định nghĩa, a là tập hợp các nút (đỉnh) cùng với các cặp nút đã xác định (được gọi là cạnh, liên kết, v.v.). Trong NetworkX, các nút có thể là bất kỳ đối tượng nào. g. , 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.

Ghi chú

Đối tượng

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
1 của Python 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 gán trong nhiều chức năng chưa

Điểm giao

Có thể phát triển biểu đồ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2 theo nhiều cách. NetworkX bao gồm nhiều chức năng tạo biểu đồcơ sở để đọc và viết biểu đồ ở nhiều định dạng. To get started though we’ll look at simple manipulations. You can add one node at a time,

>>> G.add_node(1)

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

>>> 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 bộ chứa của bạn tạo ra 2 bộ có dạng

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

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

Thuộc tính nút được thảo luận thêm

Các nút từ một đồ thị có thể được tích hợp vào một đồ thị khác

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

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2 hiện chứa các nút của
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
5 dưới dạng các nút của
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2. Ngược lại, bạn có thể sử dụng đồ thị
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
5 như một nút trong
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2

>>> G.add_node(H)

Biểu đồ

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

Ghi chú

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

các cạnh

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2 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,

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

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

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

hoặc bằng cách thêm bất kỳ cạnh nào. Một ebunch là bất kỳ bộ chứa các bộ cạnh có thể lặp lại nào. Một bộ cạnh có thể là bộ 2 nút hoặc bộ 3 có 2 nút theo sau là từ điển thuộc tính cạnh, e. g. ,

>>> G.add_node(H)
3. Thuộc tính cạnh được thảo luận thêm

>>> G.add_edges_from(H.edges)

Không có khiếu nại khi thêm các nút hoặc cạnh hiện có. Ví dụ: sau khi loại bỏ tất cả các nút và cạnh,

>>> G.clear()

chúng tôi thêm các nút/cạnh mới và NetworkX lặng lẽ bỏ qua bất kỳ nút nào đã có

>>> G.add_node(1)
0

Ở giai đoạn này, đồ thị

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2 bao gồm 8 nút và 3 cạnh, như có thể thấy bởi

>>> G.add_node(1)
1

Ghi chú

Thứ tự báo cáo kề (e. g. , , , ) là thứ tự của phép cộng cạnh. Tuy nhiên, thứ tự của G. các cạnh là thứ tự của các phần tử kề bao gồm cả thứ tự của các nút và các phần tử kề của mỗi nút. Xem ví dụ bên dưới

>>> G.add_node(1)
2

Xét các phần tử của đồ thị

Chúng ta có thể kiểm tra các nút và các cạnh. Bốn thuộc tính đồ thị cơ bản tạo thuận lợi cho báo cáo.

>>> G.add_node(H)
8,
>>> G.add_node(H)
9,
>>> G.add_node(H)
5 và
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
1. Đây là các chế độ xem giống như tập hợp của các nút, cạnh, hàng xóm (liền kề) và bậc của các nút trong biểu đồ. Chúng cung cấp chế độ xem chỉ đọc được cập nhật liên tục vào cấu trúc biểu đồ. Chúng cũng giống như dict ở chỗ bạn có thể tra cứu các thuộc tính dữ liệu của nút và cạnh thông qua các chế độ xem và lặp lại với các thuộc tính dữ liệu bằng các phương thức
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
2,
>>> G.add_edge(1, 2)
>>> e = (2, 3)
>>> G.add_edge(*e)  # unpack edge tuple*
3. Nếu bạn muốn một loại vùng chứa cụ thể thay vì một dạng xem, bạn có thể chỉ định một. Ở đây chúng tôi sử dụng danh sách, mặc dù bộ, ký hiệu, bộ dữ liệu và các vùng chứa khác có thể tốt hơn trong các ngữ cảnh khác

>>> G.add_node(1)
3

Người ta có thể chỉ định để báo cáo các cạnh và độ từ một tập hợp con của tất cả các nút bằng cách sử dụng một. Một nbunch là bất kỳ của.

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
1 (có nghĩa là tất cả các nút), một nút hoặc vùng chứa các nút có thể lặp lại mà bản thân nó không phải là một nút trong biểu đồ

>>> G.add_node(1)
4

Loại bỏ các phần tử khỏi biểu đồ

Người ta có thể loại bỏ các nút và cạnh khỏi biểu đồ theo cách tương tự như thêm. Sử dụng các phương thức , , và , e. g

>>> G.add_node(1)
5

Sử dụng các hàm tạo đồ thị

Các đối tượng biểu đồ không cần phải được xây dựng tăng dần - dữ liệu chỉ định cấu trúc biểu đồ có thể được chuyển trực tiếp tới các hàm tạo của các lớp biểu đồ khác nhau. Khi tạo cấu trúc biểu đồ bằng cách khởi tạo một trong các lớp biểu đồ, bạn có thể chỉ định dữ liệu ở một số định dạng

>>> G.add_node(1)
6

Những gì để sử dụng như các nút và cạnh

Bạn có thể nhận thấy rằng các nút và cạnh không được chỉ định làm đối tượng NetworkX. Điều này cho phép bạn tự do sử dụng các mục có ý nghĩa như các nút và cạnh. Các lựa chọn phổ biến nhất là số hoặc chuỗi, nhưng một nút có thể là bất kỳ đối tượng có thể băm nào (ngoại trừ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
1) và một cạnh có thể được liên kết với bất kỳ đối tượng nào
>>> G.add_edges_from([(1, 2), (1, 3)])
0 bằng cách sử dụng
>>> G.add_edges_from([(1, 2), (1, 3)])
1

Ví dụ:

>>> G.add_edges_from([(1, 2), (1, 3)])
2 và
>>> G.add_edges_from([(1, 2), (1, 3)])
3 có thể là các đối tượng protein từ Ngân hàng Dữ liệu Protein RCSB và
>>> G.add_edges_from([(1, 2), (1, 3)])
0 có thể đề cập đến bản ghi XML của các ấn phẩm trình bày chi tiết các quan sát thử nghiệm về sự tương tác của chúng

Chúng tôi nhận thấy sức mạnh này khá hữu ích, nhưng việc lạm dụng 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 cân nhắc sử dụng để có được biểu đồ truyền thống hơn với nhãn số nguyên

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

Ngoài các khung nhìn và , 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 chỉ số dưới

>>> G.add_node(1)
7

Bạn có thể lấy/đặt thuộc tính của một cạnh bằng cách sử dụng ký hiệu chỉ số dưới nếu cạnh đó đã tồn tại

>>> G.add_node(1)
8

Có thể kiểm tra nhanh tất cả các cặp (nút, kề) bằng cách sử dụng

>>> G.add_edges_from([(1, 2), (1, 3)])
8 hoặc
>>> G.add_edges_from([(1, 2), (1, 3)])
9. Lưu ý rằng đối với đồ thị vô hướng, phép lặp kề sẽ nhìn thấy mỗi cạnh hai lần

>>> G.add_node(1)
9

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ác cạnh

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

Thêm 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 đính kèm vào biểu đồ, nút hoặc cạnh

Mỗi biểu đồ, nút và cạnh có thể chứa các cặp thuộc tính khóa/giá trị trong từ điển thuộc tính được liên kết (các khóa phải có thể băm được). Theo mặc định, các thuộc tính này 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(H.edges)
0,
>>> G.add_edges_from(H.edges)
1 hoặc thao tác trực tiếp với các từ điển thuộc tính có tên
>>> G.add_edges_from(H.edges)
2,
>>> G.add_node(H)
8 và
>>> G.add_node(H)
9 cho biểu đồ
>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2

Thuộc tính đồ thị

Gán thuộc tính đồ thị khi tạo đồ thị mới

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

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

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

thuộc tính nút

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

>>> G.add_edges_from(H.edges)
6,
>>> G.add_edges_from(H.edges)
7 hoặc
>>> G.add_node(H)
8

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

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

>>> G.add_node(H)
8 sẽ không thêm nút đó vào biểu đồ, hãy sử dụng
>>> G.clear()
0 để 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.clear()
1,
>>> G.clear()
2 hoặc chỉ số dưới

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

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

>>> G.clear()
3 phải ở dạng 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ó hướng

Lớp này cung cấp các phương thức và thuộc tính bổ sung dành riêng cho các cạnh được định hướng, e. g. , , , , vân vân. Để cho phép các thuật toán làm việc với cả hai lớp một cách dễ dàng, các phiên bản trực tiếp của tương đương với trong khi báo cáo tổng của và mặc dù đôi khi điều đó có thể cảm thấy không nhất quán

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

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

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

đa đồ thị

NetworkX cung cấp các lớp cho biểu đồ cho phép nhiều cạnh giữa bất kỳ cặp nút nào. Các lớp và cho phép bạn thêm cùng một cạnh hai lần, có thể với các dữ liệu cạnh khác nhau. Điều này có thể mạnh mẽ đối với 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 đồ như vậy. Trường hợp kết quả được xác định rõ, e. g. , chúng tôi cung cấp chức năng. Nếu không, bạn nên chuyển đổi sang biểu đồ tiêu chuẩn theo cách làm cho phép đo được xác định rõ

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

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

Ngoài việc xây dựng biểu đồ 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, nbunch)

Trả về đồ thị con được tạo ra trên các nút trong nbunch

(G, H[, đổi tên])

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

(G, H)

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

(G, H)

Trả về tích Descartes của G và H

(G, H)

Soạn biểu đồ 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)

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

(G[, with_data])

Trả về một bản sao của đồ thị G đã loại bỏ tất cả các cạnh

(đồ thị)

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

>>> G.add_node(1)
16

(đồ thị)

Trả về chế độ xem trực tiếp của biểu đồ

>>> G.add_node(1)
16

2. Sử dụng lệnh gọi đến một trong những biểu đồ nhỏ cổ điển, e. g. ,

([tạo_sử dụng])

Trả về biểu đồ Petersen

([tạo_sử dụng])

Trả về biểu đồ Tutte

([tạo_sử dụng])

Trả lại một mê cung nhỏ với một chu kỳ

([tạo_sử dụng])

Trả về đồ thị tứ diện Platonic 3 chính quy

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

(n[, tạo_sử dụng])

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

>>> G.add_node(1)
24 với n nút

(n1, n2[, tạo_sử dụng])

Trả về đồ thị hai phía hoàn chỉnh

>>> G.add_node(1)
26

(m1, m2[, create_using])

Trả về đồ thị thanh tạ. hai đồ thị đầy đủ được kết nối bởi một đường dẫn

(m, n[, tạo_sử dụng])

Trả về Đồ thị Lollipop;

như vậy

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

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

(n, p[, hạt giống, được định hướng])

Trả về một \(G_{n,p}\) đồ thị ngẫu nhiên, còn được gọi là đồ thị Erdős-Rényi hoặc đồ thị nhị thức.

(n, k, p[, hạt giống])

Trả về biểu đồ thế giới nhỏ Watts–Strogatz

(n, m[, hạt giống,. ])

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 Barabasi–Albert

(n, p1, p2[, hạt giống])

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

như vậy

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

5. Đọc biểu đồ được lưu trữ trong 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 kề, GML, GraphML, LEDA và các định dạng khác

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

Để biết chi tiết về các định dạng biểu đồ, hãy xem Đọc và viết biểu đồ và để biết các hàm tạo biểu đồ, hãy xem Trình tạo biểu đồ

Phân tích đồ thị

Cấu trúc của

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

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

Một số hàm có đầu ra lớn lặp lại 2 bộ (nút, giá trị). Chúng dễ dàng được lưu trữ trong một cấu trúc nếu bạn muốn

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

Xem Thuật toán để biết chi tiết về các thuật toán đồ thị được hỗ trợ.

Vẽ đồ thị

NetworkX về cơ bản không phải là gói vẽ biểu đồ nhưng bao gồm vẽ cơ bản với Matplotlib cũng như giao diện để sử dụng gói phần mềm mã nguồn mở Graphviz. Đây là một phần của networkx. drawing mô-đun và sẽ được nhập nếu có thể.

Lần đầu tiên nhập giao diện cốt truyện của Matplotlib (pylab cũng hoạt động)

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

Để kiểm tra xem việc nhập khẩu có thành công hay không, hãy vẽ

>>> H = nx.path_graph(10)
>>> G.add_nodes_from(H)
2 bằng cách sử dụng một trong

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

(png, thuê. png, pdf)

Màu chuỗi f python

khi vẽ lên màn hình tương tác. Lưu ý rằng bạn có thể cần phát hành Matplotlib

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

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

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

(png, thuê. png, pdf)

Màu chuỗi f python

Bạn có thể tìm thấy các tùy chọn bổ sung thông qua và bố cục thông qua. Bạn có thể sử dụng nhiều vỏ với

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

(png, thuê. png, pdf)

Màu chuỗi f python

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

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

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

>>> G.add_node(1)
42 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 hoặc để lấy vị trí nút hoặc viết biểu đồ ở định dạng dấu chấm để xử lý thêm