Tạo biểu đồ từ danh sách cạnh python

Chương này chứa một tổng quan ngắn về khả năng của igraph. Bạn nên đọc nó ít nhất một lần nếu bạn chưa quen với igraph. Tôi cho rằng bạn đã cài đặt igraph; . Sự quen thuộc với ngôn ngữ Python cũng được giả định; . Nếu đây là lần đầu tiên bạn thử sử dụng một ngôn ngữ lập trình, A Byte of Python là một nơi tốt để bắt đầu. Nếu bạn đã có nền tảng lập trình ổn định với các ngôn ngữ khác và bạn chỉ muốn có cái nhìn tổng quan nhanh về Python, Học Python trong 10 phút có lẽ là lựa chọn tốt nhất dành cho bạn

biểu đồ bắt đầu

igraph là một mô-đun Python, do đó nó có thể được nhập chính xác theo cách giống như bất kỳ mô-đun Python thông thường nào khác tại dấu nhắc Python

$ python
Python 3.9.6 [default, Jun 29 2021, 05:25:02]
[Clang 12.0.5 [clang-1205.0.22.9]] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import igraph

Thao tác này nhập các đối tượng và phương thức của igraph bên trong một không gian tên riêng có tên là

>>> print[g]
IGRAPH U--- 0 0 --
9. Bất cứ khi nào bạn muốn gọi bất kỳ phương thức nào của igraph, bạn sẽ phải cung cấp tiêu chuẩn không gian tên thích hợp. e. g. , để kiểm tra xem bạn đang sử dụng phiên bản igraph nào, bạn có thể làm như sau

>>> import igraph
>>> print[igraph.__version__]
0.9.6

Một cách khác để sử dụng igraph là nhập tất cả các đối tượng và phương thức của nó vào không gian tên chính của Python [vì vậy bạn không phải nhập tiêu chuẩn không gian tên mỗi lần]. Điều này tốt miễn là các đối tượng và phương thức của riêng bạn không xung đột với các đối tượng và phương thức được cung cấp bởi igraph

Cách thứ ba để khởi động igraph là chỉ cần gọi tập lệnh khởi động được cung cấp cùng với gói igraph mà bạn đã cài đặt. Không quá ngạc nhiên, tập lệnh được gọi là igraph và với điều kiện là tập lệnh nằm trên đường dẫn của bạn trong dòng lệnh của hệ điều hành của bạn [điều này gần như chắc chắn xảy ra trên Linux và OS X], bạn chỉ cần gõ igraph tại dòng lệnh. Người dùng Windows sẽ tìm thấy tập lệnh bên trong thư mục con

>>> g.add_edges[[[0,1], [1,2]]]
0 của Python và bạn có thể phải thêm tập lệnh đó vào đường dẫn của mình theo cách thủ công để có thể sử dụng tập lệnh từ dòng lệnh mà không cần nhập toàn bộ đường dẫn

Khi bạn bắt đầu tập lệnh, bạn sẽ thấy một cái gì đó như thế này

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>

Tập lệnh khởi động dòng lệnh nhập tất cả các phương thức và đối tượng của igraph vào không gian tên chính, do đó, thực tế nó tương đương với

>>> g.add_edges[[[0,1], [1,2]]]
1. Sự khác biệt giữa hai cách tiếp cận [ngoài việc tiết kiệm một số thao tác gõ] là tập lệnh dòng lệnh kiểm tra xem bạn đã cài đặt trình bao cao cấp hơn của Python chưa và sử dụng trình bao đó thay vì trình bao Python tiêu chuẩn. Hiện tại, mô-đun tìm kiếm IPython và IDLE [vỏ đồ họa dựa trên Tcl/Tk được cung cấp cùng với Python]. Nếu cả IPython và IDLE đều không được cài đặt, tập lệnh khởi động sẽ khởi chạy trình bao Python mặc định. Bạn cũng có thể sửa đổi thứ tự tìm kiếm các shell này bằng cách điều chỉnh tệp cấu hình của igraph [xem cấu hình-igraph]

Nói chung, nên sử dụng tập lệnh khởi động dòng lệnh khi sử dụng igraph tương tác [i. e. , khi bạn chỉ muốn tải nhanh hoặc tạo một số đồ thị, tính toán một số thuộc tính cơ bản và lưu kết quả vào đâu đó]. Đối với các quy trình phân tích biểu đồ không dùng một lần mà bạn định chạy lại theo thời gian, bạn nên viết riêng một tập lệnh trong tệp nguồn

>>> g.add_edges[[[0,1], [1,2]]]
2 và nhập igraph bằng một trong các phương pháp trên khi bắt đầu tập lệnh, sau đó khởi chạy tập lệnh

Từ giờ trở đi, mọi ví dụ trong tài liệu sẽ giả định rằng các đối tượng và phương thức của igraph được nhập vào không gian tên chính [i. e. , chúng tôi đã sử dụng

>>> g.add_edges[[[0,1], [1,2]]]
1 thay vì
>>> g.add_edges[[[0,1], [1,2]]]
4]. Nếu bạn để igraph lấy không gian tên riêng, vui lòng điều chỉnh tất cả các ví dụ cho phù hợp

Tạo biểu đồ từ đầu

Giả sử rằng bạn đã bắt đầu igraph thành công, đã đến lúc tạo biểu đồ igraph đầu tiên của bạn. Điều này khá đơn giản

Câu lệnh trên đã tạo ra một đồ thị vô hướng không có đỉnh hoặc cạnh và gán nó cho biến g. Để xác nhận rằng nó thực sự là một biểu đồ igraph, chúng ta có thể in nó

>>> g

Điều này cho chúng ta biết rằng g là một thể hiện của lớp

>>> g.add_edges[[[0,1], [1,2]]]
5 của igraph và nó hiện đang tồn tại ở địa chỉ bộ nhớ
>>> g.add_edges[[[0,1], [1,2]]]
6 [đầu ra chính xác gần như chắc chắn sẽ khác đối với nền tảng của bạn]. Để có được đầu ra thân thiện với người dùng hơn, chúng ta có thể thử in biểu đồ bằng cách sử dụng câu lệnh
>>> g.add_edges[[[0,1], [1,2]]]
7 của Python

>>> print[g]
IGRAPH U--- 0 0 --

Tóm tắt này bao gồm IGRAPH, theo sau là một mã dài bốn ký tự, số đỉnh, số cạnh, hai dấu gạch ngang [–] và tên của đồ thị [i. e. nội dung của thuộc tính tên, nếu có]

Điều này không quá thú vị cho đến nay; . Trước tiên hãy thêm một số đỉnh

>>> g.add_edges[[[0,1], [1,2]]]
8 [tôi. e. , phương thức
>>> g.add_edges[[[0,1], [1,2]]]
9 của lớp
>>> g.add_edges[[[0,1], [1,2]]]
5] thêm số đỉnh đã cho vào đồ thị

Bây giờ đồ thị của chúng ta có ba đỉnh nhưng không có cạnh, vì vậy hãy thêm một số cạnh nữa. Bạn có thể thêm các cạnh bằng cách gọi

>>> print[g]
IGRAPH U--- 0 0 --
71 - nhưng để thêm các cạnh, bằng cách nào đó bạn phải tham chiếu đến các đỉnh hiện có. igraph sử dụng ID đỉnh số nguyên bắt đầu từ 0, do đó, đỉnh đầu tiên của biểu đồ của bạn có chỉ số 0, đỉnh thứ hai có chỉ số 1, v.v. Các cạnh được chỉ định bởi các cặp số nguyên, do đó,
>>> print[g]
IGRAPH U--- 0 0 --
72 biểu thị danh sách hai cạnh. một giữa đỉnh thứ nhất và thứ hai, và một giữa đỉnh thứ hai và thứ ba của đồ thị. Chuyển danh sách này cho
>>> print[g]
IGRAPH U--- 0 0 --
71 thêm hai cạnh này vào biểu đồ của bạn

>>> g.add_edges[[[0,1], [1,2]]]

>>> print[g]
IGRAPH U--- 0 0 --
74 đủ thông minh để tìm ra điều bạn muốn làm trong hầu hết các trường hợp. nếu bạn cung cấp một cặp số nguyên, nó sẽ tự động cho rằng bạn muốn thêm một cạnh. Tuy nhiên, nếu bạn cố gắng thêm các cạnh vào các đỉnh có ID không hợp lệ [i. e. , bạn thử thêm một cạnh vào đỉnh 5 khi bạn chỉ có ba đỉnh], bạn sẽ gặp ngoại lệ

>>> print[g]
IGRAPH U--- 0 0 --
7

Hầu hết các hàm igraph sẽ tăng 175 nếu có sự cố xảy ra. Thông báo tương ứng với ngoại lệ cung cấp cho bạn một lời giải thích bằng văn bản ngắn về những gì đã xảy ra [

>>> print[g]
IGRAPH U--- 0 0 --
76] cùng với dòng tương ứng trong nguồn C nơi xảy ra lỗi. Tên tệp và số dòng chính xác có thể không cung cấp nhiều thông tin cho bạn, nhưng nó rất có giá trị đối với các nhà phát triển igraph nếu bạn cho rằng mình đã tìm thấy lỗi trong igraph và bạn muốn báo cáo lỗi đó

Chúng ta hãy tiếp tục với đồ thị

>>> print[g]
IGRAPH U--- 0 0 --
77 của chúng ta và thêm một số đỉnh và cạnh vào nó

>>> import igraph
>>> print[igraph.__version__]
0.9.6
6

Bây giờ, điều này là tốt hơn. Chúng tôi có một đồ thị vô hướng với sáu đỉnh và bảy cạnh và bạn cũng có thể xem danh sách các cạnh trong đầu ra của igraph. Các cạnh cũng có ID, tương tự như các đỉnh; . ID đỉnh và cạnh luôn liên tục và hệ quả trực tiếp của thực tế này là nếu bạn tình cờ xóa một cạnh, rất có thể một số [hoặc tất cả] các cạnh sẽ được đánh số lại. Hơn nữa, nếu bạn xóa một đỉnh, thì ngay cả ID của đỉnh cũng sẽ thay đổi. Các cạnh có thể bị xóa bởi

>>> print[g]
IGRAPH U--- 0 0 --
78 và nó yêu cầu xóa danh sách các ID cạnh [hoặc một ID cạnh duy nhất]. Các đỉnh có thể bị xóa bởi
>>> print[g]
IGRAPH U--- 0 0 --
79 và bạn có thể đã đoán rằng nó yêu cầu xóa một danh sách các ID đỉnh [hoặc một ID đỉnh duy nhất]. Nếu bạn không biết ID của một cạnh mà bạn muốn xóa, nhưng bạn biết ID của các đỉnh tại hai điểm cuối của nó, bạn có thể sử dụng
>>> import igraph
>>> print[igraph.__version__]
0.9.6
60 để lấy ID của cạnh đó. Hãy nhớ rằng, tất cả đều là các phương thức của lớp
>>> g.add_edges[[[0,1], [1,2]]]
5 và bạn phải gọi chúng trong trường hợp
>>> g.add_edges[[[0,1], [1,2]]]
5 thích hợp

>>> g.add_edges[[[0,1], [1,2]]]
2

>>> import igraph
>>> print[igraph.__version__]
0.9.6
63 là một lệnh mới mà bạn chưa từng thấy trước đây; . Đầu ra của nó tương tự như đầu ra của
>>> g.add_edges[[[0,1], [1,2]]]
7 nhưng nó không in danh sách cạnh để tránh làm lộn xộn màn hình đối với các đồ thị lớn. Nói chung, bạn nên sử dụng
>>> import igraph
>>> print[igraph.__version__]
0.9.6
63 thay vì
>>> g.add_edges[[[0,1], [1,2]]]
7 khi làm việc tương tác với các biểu đồ lớn vì việc in danh sách cạnh của biểu đồ có hàng triệu đỉnh và cạnh có thể mất khá nhiều thời gian

Tạo đồ thị

igraph bao gồm một bộ lớn các trình tạo biểu đồ có thể được chia thành hai nhóm. trình tạo đồ thị xác định và ngẫu nhiên. Trình tạo xác định tạo ra cùng một biểu đồ nếu bạn gọi chúng với các tham số chính xác giống nhau, trong khi trình tạo ngẫu nhiên tạo ra một biểu đồ khác nhau mỗi lần. Trình tạo tất định bao gồm các phương pháp tạo cây, mạng thông thường, vòng, vòng hợp âm mở rộng, một số đồ thị nổi tiếng, v.v., trong khi trình tạo ngẫu nhiên được sử dụng để tạo mạng ngẫu nhiên Erdős-Rényi, mạng Barabási-Albert, đồ thị ngẫu nhiên hình học, v.v. igraph có quá nhiều trình tạo để trình bày tất cả chúng trong hướng dẫn này, vì vậy chúng tôi sẽ chỉ thử một trình tạo tất định và ngẫu nhiên thay thế

>>> g.add_edges[[[0,1], [1,2]]]
7

>>> import igraph
>>> print[igraph.__version__]
0.9.6
67 tạo biểu đồ cây thông thường. Cái mà chúng tôi đã tạo có 127 đỉnh và mỗi đỉnh [ngoài các lá] có hai con [và tất nhiên là một cha]. Bất kể bạn gọi
>>> import igraph
>>> print[igraph.__version__]
0.9.6
67 bao nhiêu lần, biểu đồ được tạo sẽ luôn giống nhau nếu bạn sử dụng các tham số giống nhau

>>> import igraph
>>> print[igraph.__version__]
0.9.6
0

Đoạn mã trên cũng cho bạn thấy rằng phương thức

>>> import igraph
>>> print[igraph.__version__]
0.9.6
69 của đối tượng đồ thị
>>> g.add_edges[[[0,1], [1,2]]]
5 trả về một danh sách có chứa các cặp số nguyên, mỗi cặp một số nguyên. Thành viên đầu tiên của cặp là ID đỉnh nguồn và thành viên thứ hai là ID đỉnh đích của cạnh tương ứng. Danh sách này quá dài, vì vậy hãy in 10 phần tử đầu tiên

>>> import igraph
>>> print[igraph.__version__]
0.9.6
1

Hãy làm tương tự với một trình tạo ngẫu nhiên

>>> import igraph
>>> print[igraph.__version__]
0.9.6
2

trong đó

>>> g.add_edges[[[0,1], [1,2]]]
21 hiển thị tên của các thuộc tính cho đỉnh [v] và cạnh [e]

>>> g.add_edges[[[0,1], [1,2]]]
22 tạo biểu đồ ngẫu nhiên hình học. n điểm được chọn ngẫu nhiên và đồng nhất bên trong hình vuông đơn vị và các cặp điểm gần nhau hơn khoảng cách d xác định trước được nối với nhau bằng một cạnh. Trong trường hợp của chúng tôi, n là 100 và d là 0. 2. Do tính chất ngẫu nhiên của thuật toán, rất có thể là biểu đồ chính xác mà bạn nhận được khác với biểu đồ được tạo khi tôi viết hướng dẫn này, do đó các giá trị ở trên trong bản tóm tắt sẽ không khớp với các giá trị bạn nhận được. Điều này là bình thường và dự kiến. Ngay cả khi bạn tạo hai biểu đồ ngẫu nhiên hình học trên cùng một máy, chúng sẽ khác nhau đối với cùng một bộ thông số

>>> import igraph
>>> print[igraph.__version__]
0.9.6
3

>>> g.add_edges[[[0,1], [1,2]]]
23 cho bạn biết hai đồ thị có đẳng cấu hay không. Nói chung, có thể mất khá nhiều thời gian, đặc biệt là đối với các đồ thị lớn, nhưng trong trường hợp của chúng tôi, câu trả lời có thể nhanh chóng được đưa ra bằng cách kiểm tra phân phối bậc của hai đồ thị

Đặt và truy xuất thuộc tính

igraph sử dụng ID đỉnh và cạnh trong lõi của nó. Các ID này là số nguyên, bắt đầu từ 0 và chúng luôn liên tục tại bất kỳ thời điểm cụ thể nào trong suốt thời gian tồn tại của biểu đồ. Điều này có nghĩa là bất cứ khi nào các đỉnh và cạnh bị xóa, một tập hợp lớn các ID cạnh và có thể cả ID đỉnh sẽ được đánh số lại để đảm bảo tính liên tục. Bây giờ, giả sử rằng biểu đồ của chúng ta là một mạng xã hội nơi các đỉnh biểu thị con người và các cạnh biểu thị các kết nối xã hội giữa họ. Một cách để duy trì liên kết giữa ID đỉnh và giả sử, tên tương ứng là có một danh sách Python bổ sung ánh xạ từ ID đỉnh sang tên. Hạn chế của phương pháp này là danh sách bổ sung này phải được duy trì song song với các sửa đổi của biểu đồ gốc. May mắn thay, igraph biết khái niệm thuộc tính, tôi. e. , các đối tượng phụ trợ được liên kết với một đỉnh hoặc cạnh nhất định của biểu đồ hoặc thậm chí với toàn bộ biểu đồ. Mỗi igraph

>>> g.add_edges[[[0,1], [1,2]]]
5, đỉnh và cạnh hoạt động như một từ điển Python tiêu chuẩn theo một nghĩa nào đó. bạn có thể thêm các cặp khóa-giá trị vào bất kỳ cặp nào trong số chúng, với khóa đại diện cho tên thuộc tính của bạn [hạn chế duy nhất là nó phải là một chuỗi] và giá trị đại diện cho chính thuộc tính đó

Cảnh báo

Các thuộc tính có thể là các đối tượng Python tùy ý, nhưng nếu bạn đang lưu biểu đồ vào một tệp, thì chỉ các thuộc tính chuỗi và số sẽ được giữ lại. Xem mô-đun

>>> g.add_edges[[[0,1], [1,2]]]
25 trong thư viện Python tiêu chuẩn nếu bạn đang tìm cách lưu các loại thuộc tính khác. Bạn có thể chọn từng thuộc tính của mình, lưu trữ chúng dưới dạng chuỗi và lưu chúng hoặc bạn có thể chọn toàn bộ
>>> g.add_edges[[[0,1], [1,2]]]
5 nếu bạn biết rằng bạn chỉ muốn tải lại biểu đồ vào Python

Hãy để chúng tôi tạo một mạng xã hội tưởng tượng đơn giản theo cách thông thường bằng tay

>>> import igraph
>>> print[igraph.__version__]
0.9.6
4

Bây giờ, giả sử rằng chúng ta muốn lưu trữ tên, tuổi và giới tính của những người trong mạng này dưới dạng thuộc tính đỉnh và đối với mọi kết nối, chúng ta muốn lưu trữ xem đây là mối quan hệ bạn bè thân mật hay mối quan hệ chính thức. Mỗi đối tượng

>>> g.add_edges[[[0,1], [1,2]]]
5 chứa hai phần tử đặc biệt được gọi là
>>> g.add_edges[[[0,1], [1,2]]]
28 và
>>> g.add_edges[[[0,1], [1,2]]]
29, tương ứng với chuỗi tất cả các đỉnh và tất cả các cạnh. Nếu bạn cố gắng sử dụng
>>> g.add_edges[[[0,1], [1,2]]]
28 hoặc
>>> g.add_edges[[[0,1], [1,2]]]
29 làm từ điển Python, bạn sẽ thao tác với vùng lưu trữ thuộc tính của biểu đồ

>>> import igraph
>>> print[igraph.__version__]
0.9.6
5

Bất cứ khi nào bạn sử dụng

>>> g.add_edges[[[0,1], [1,2]]]
28 hoặc
>>> g.add_edges[[[0,1], [1,2]]]
29 làm từ điển, bạn đang gán các thuộc tính cho tất cả các đỉnh/cạnh của đồ thị. Tuy nhiên, bạn có thể chỉ cần thay đổi các thuộc tính của các đỉnh và các cạnh riêng lẻ bằng cách lập chỉ mục
>>> g.add_edges[[[0,1], [1,2]]]
28 hoặc
>>> g.add_edges[[[0,1], [1,2]]]
29 với các số nguyên như thể chúng là các danh sách [hãy nhớ rằng chúng là các chuỗi, chúng chứa tất cả các đỉnh hoặc tất cả các cạnh]. Khi bạn lập chỉ mục cho chúng, bạn thu được một đối tượng
>>> g.add_edges[[[0,1], [1,2]]]
76 hoặc
>>> g.add_edges[[[0,1], [1,2]]]
77, đề cập đến [tôi chắc rằng bạn đã đoán ra điều đó] một đỉnh hoặc một cạnh của đồ thị. Các đối tượng
>>> g.add_edges[[[0,1], [1,2]]]
76 và
>>> g.add_edges[[[0,1], [1,2]]]
77 cũng có thể được sử dụng làm từ điển để thay đổi các thuộc tính của đỉnh hoặc cạnh đơn đó

>>> import igraph
>>> print[igraph.__version__]
0.9.6
6

Đoạn mã trên minh họa rằng việc lập chỉ mục đối tượng

>>> import igraph
>>> print[igraph.__version__]
0.9.6
00 trả về đối tượng
>>> g.add_edges[[[0,1], [1,2]]]
77; . Các đối tượng
>>> g.add_edges[[[0,1], [1,2]]]
77 cũng có một số thuộc tính hữu ích. thuộc tính
>>> import igraph
>>> print[igraph.__version__]
0.9.6
03 cung cấp cho bạn đỉnh nguồn của cạnh đó,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
04 cung cấp cho bạn đỉnh đích,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
05 cung cấp cho bạn ID cạnh tương ứng,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
06 cung cấp cho bạn một bộ chứa các đỉnh nguồn và đích và
>>> import igraph
>>> print[igraph.__version__]
0.9.6
07 cung cấp cho bạn một từ điển chứa các thuộc tính của cạnh này. Phiên bản
>>> g.add_edges[[[0,1], [1,2]]]
76 chỉ có
>>> import igraph
>>> print[igraph.__version__]
0.9.6
05 và
>>> import igraph
>>> print[igraph.__version__]
0.9.6
07

>>> import igraph
>>> print[igraph.__version__]
0.9.6
11 luôn đại diện cho tất cả các cạnh trong biểu đồ, nên việc lập chỉ mục cho nó bằng i sẽ luôn trả về cạnh có ID i và tất nhiên điều tương tự cũng áp dụng cho
>>> import igraph
>>> print[igraph.__version__]
0.9.6
12. Tuy nhiên, hãy nhớ rằng một đối tượng
>>> import igraph
>>> print[igraph.__version__]
0.9.6
00 nói chung không nhất thiết phải đại diện cho toàn bộ chuỗi cạnh của biểu đồ; . Nhưng trước khi đi sâu vào vấn đề đó, hãy xem cách chúng ta có thể gán các thuộc tính cho toàn bộ biểu đồ. Không quá ngạc nhiên, bản thân các đối tượng
>>> g.add_edges[[[0,1], [1,2]]]
5 cũng có thể hoạt động như từ điển

>>> import igraph
>>> print[igraph.__version__]
0.9.6
7

Cuối cùng, cần đề cập rằng các thuộc tính có thể bị xóa bởi từ khóa Python

>>> import igraph
>>> print[igraph.__version__]
0.9.6
18 giống như bạn làm với bất kỳ thành viên nào của một từ điển thông thường

>>> import igraph
>>> print[igraph.__version__]
0.9.6
8

Thuộc tính cấu trúc của đồ thị

Bên cạnh các quy trình thao tác thuộc tính và biểu đồ đơn giản được mô tả ở trên, igraph cung cấp một tập hợp lớn các phương thức để tính toán các thuộc tính cấu trúc khác nhau của biểu đồ. Việc ghi lại tất cả chúng nằm ngoài phạm vi của hướng dẫn này, do đó phần này sẽ chỉ giới thiệu một vài trong số chúng với mục đích minh họa. Chúng tôi sẽ làm việc trên mạng xã hội nhỏ mà chúng tôi đã xây dựng trong phần trước

Có lẽ thuộc tính đơn giản nhất mà người ta có thể nghĩ đến là bậc đỉnh. Bậc của một đỉnh bằng số cạnh kề với nó. Trong trường hợp mạng có hướng, chúng ta cũng có thể xác định theo độ [số cạnh hướng tới đỉnh] và độ ngoài [số cạnh xuất phát từ đỉnh]. igraph có thể tính toán tất cả chúng bằng một cú pháp đơn giản

>>> import igraph
>>> print[igraph.__version__]
0.9.6
9

Nếu đồ thị có hướng, chúng ta đã có thể tính riêng biệt độ vào và độ ngoài bằng cách sử dụng

>>> import igraph
>>> print[igraph.__version__]
0.9.6
19 và
>>> import igraph
>>> print[igraph.__version__]
0.9.6
20. Bạn cũng có thể chuyển một ID đỉnh hoặc danh sách ID đỉnh cho
>>> import igraph
>>> print[igraph.__version__]
0.9.6
21 nếu bạn chỉ muốn tính độ cho một tập hợp con các đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
0

Quy ước gọi này áp dụng cho hầu hết các thuộc tính cấu trúc mà igraph có thể tính toán. Đối với các thuộc tính đỉnh, các phương thức chấp nhận ID đỉnh hoặc danh sách ID đỉnh [và nếu chúng bị bỏ qua, mặc định là tập hợp tất cả các đỉnh]. Đối với thuộc tính cạnh, các phương thức chấp nhận một ID cạnh duy nhất hoặc danh sách ID cạnh. Thay vì danh sách ID, bạn cũng có thể cung cấp phiên bản

>>> import igraph
>>> print[igraph.__version__]
0.9.6
16 hoặc
>>> import igraph
>>> print[igraph.__version__]
0.9.6
00 một cách thích hợp. Ở phần sau, bạn sẽ học cách giới hạn chúng ở chính xác các đỉnh hoặc cạnh mà bạn muốn

Ghi chú

Đối với một số biện pháp, sẽ không hợp lý nếu chỉ tính toán chúng cho một vài đỉnh hoặc cạnh thay vì toàn bộ biểu đồ, vì dù sao thì nó cũng sẽ mất cùng thời gian. Trong trường hợp này, các phương thức sẽ không chấp nhận ID đỉnh hoặc cạnh, nhưng bạn vẫn có thể hạn chế danh sách kết quả sau này bằng cách sử dụng toán tử lập chỉ mục và cắt danh sách tiêu chuẩn. Một ví dụ như vậy là tính trung tâm của eigenvector [

>>> import igraph
>>> print[igraph.__version__]
0.9.6
24]

Ngoài bậc, igraph còn bao gồm các quy trình tích hợp sẵn để tính toán nhiều thuộc tính trung tâm khác, bao gồm độ giữa đỉnh và cạnh [

>>> import igraph
>>> print[igraph.__version__]
0.9.6
25,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
26] hoặc Xếp hạng trang của Google [
>>> import igraph
>>> print[igraph.__version__]
0.9.6
27] chỉ để nêu tên một số. Ở đây chúng tôi chỉ minh họa cạnh giữa

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
1

Bây giờ chúng ta cũng có thể tìm ra kết nối nào có tính trung tâm giữa cao nhất với một số phép thuật Python

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
2

Hầu hết các thuộc tính cấu trúc cũng có thể được truy xuất cho một tập hợp con các đỉnh hoặc cạnh hoặc cho một đỉnh hoặc cạnh duy nhất bằng cách gọi phương thức thích hợp trên đối tượng quan tâm

>>> import igraph
>>> print[igraph.__version__]
0.9.6
16,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
00,
>>> g.add_edges[[[0,1], [1,2]]]
76 hoặc
>>> g.add_edges[[[0,1], [1,2]]]
77

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
3

Truy vấn các đỉnh và cạnh dựa trên các thuộc tính

Chọn đỉnh và cạnh

Hãy tưởng tượng rằng trong một mạng xã hội nhất định, bạn muốn tìm ra ai có mức độ trung tâm cao nhất hoặc giữa. Bạn có thể làm điều đó với các công cụ được trình bày cho đến nay và một số kiến ​​thức cơ bản về Python, nhưng vì nhiệm vụ phổ biến là chọn các đỉnh và cạnh dựa trên các thuộc tính hoặc thuộc tính cấu trúc, igraph cung cấp cho bạn một cách dễ dàng hơn để thực hiện điều đó

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
4

Cú pháp thoạt nhìn có vẻ hơi khó xử, vì vậy hãy cố gắng diễn giải nó từng bước một.

>>> import igraph
>>> print[igraph.__version__]
0.9.6
32 là một phương thức của
>>> import igraph
>>> print[igraph.__version__]
0.9.6
16 và mục đích duy nhất của nó là lọc một
>>> import igraph
>>> print[igraph.__version__]
0.9.6
16 dựa trên thuộc tính của các đỉnh riêng lẻ. Cách nó lọc các đỉnh phụ thuộc vào các đối số từ khóa và vị trí của nó. Các đối số vị trí [những đối số không có tên rõ ràng như
>>> import igraph
>>> print[igraph.__version__]
0.9.6
35 ở trên] luôn được xử lý trước các đối số từ khóa như sau

  • Nếu đối số vị trí đầu tiên là

    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    36, một chuỗi trống [không chứa đỉnh] được trả về

    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    5

  • Nếu đối số vị trí đầu tiên là một đối tượng có thể gọi được [i. e. , một hàm, một phương thức liên kết hoặc bất kỳ thứ gì hoạt động giống như một hàm], đối tượng sẽ được gọi cho mọi đỉnh hiện có trong chuỗi. Nếu hàm trả về

    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    37 thì đỉnh đó sẽ được đưa vào, ngược lại sẽ bị loại trừ

    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    6

  • Nếu đối số vị trí đầu tiên là một đối số có thể lặp lại [i. e. , danh sách, trình tạo hoặc bất kỳ thứ gì có thể được lặp lại], nó phải trả về số nguyên và những số nguyên này sẽ được coi là chỉ số trong tập hợp đỉnh hiện tại [không nhất thiết phải là toàn bộ biểu đồ]. Chỉ những đỉnh khớp với các chỉ số đã cho mới được đưa vào tập đỉnh đã lọc. Phao, chuỗi, ID đỉnh không hợp lệ sẽ âm thầm bị bỏ qua

    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    7

  • Nếu đối số vị trí đầu tiên là một số nguyên, thì tất cả các đối số còn lại cũng được coi là số nguyên và chúng được hiểu là các chỉ số trong tập hợp đỉnh hiện tại. Đây chỉ là đường cú pháp, bạn có thể đạt được hiệu ứng tương đương bằng cách chuyển một danh sách làm đối số vị trí đầu tiên, nhưng theo cách này, bạn có thể bỏ qua dấu ngoặc vuông

    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    8

Đối số từ khóa có thể được sử dụng để lọc các đỉnh dựa trên thuộc tính hoặc thuộc tính cấu trúc của chúng. Tên của mỗi đối số từ khóa phải bao gồm tối đa hai phần. tên của thuộc tính hoặc thuộc tính cấu trúc và toán tử lọc. Toán tử có thể được bỏ qua; . Các khả năng như sau [trong đó tên biểu thị tên của thuộc tính hoặc thuộc tính]

Đối số từ khóa

Nghĩa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
38

Giá trị thuộc tính/thuộc tính phải bằng giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
39

Giá trị thuộc tính/thuộc tính không được bằng giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
40

Giá trị thuộc tính/thuộc tính phải nhỏ hơn giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
41

Giá trị thuộc tính/thuộc tính phải nhỏ hơn hoặc bằng giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
42

Giá trị thuộc tính/thuộc tính phải lớn hơn giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
43

Giá trị thuộc tính/thuộc tính phải lớn hơn hoặc bằng giá trị của đối số từ khóa

>>> import igraph
>>> print[igraph.__version__]
0.9.6
44

Giá trị thuộc tính/thuộc tính phải được bao gồm trong giá trị của đối số từ khóa, trong trường hợp này phải là một chuỗi

>>> import igraph
>>> print[igraph.__version__]
0.9.6
45

Giá trị thuộc tính/thuộc tính không được bao gồm trong giá trị của đối số từ khóa, trong trường hợp này phải là một chuỗi

Chẳng hạn, lệnh sau cung cấp cho bạn những người dưới 30 tuổi trong mạng xã hội tưởng tượng của chúng tôi

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
9

Ghi chú

Do các ràng buộc về cú pháp của Python, bạn không thể sử dụng cú pháp được thừa nhận là đơn giản hơn của

>>> import igraph
>>> print[igraph.__version__]
0.9.6
46 vì chỉ toán tử đẳng thức mới được phép xuất hiện trong danh sách đối số trong Python

Để tiết kiệm cho bạn một số thao tác gõ, bạn thậm chí có thể bỏ qua phương thức

>>> import igraph
>>> print[igraph.__version__]
0.9.6
32 nếu muốn

Về mặt lý thuyết, có thể xảy ra trường hợp tồn tại một thuộc tính và một thuộc tính cấu trúc trùng tên [e. g. , bạn có thể có một thuộc tính đỉnh tên là

>>> import igraph
>>> print[igraph.__version__]
0.9.6
48]. Trong trường hợp đó, chúng tôi sẽ không thể quyết định liệu người dùng có nghĩa là
>>> import igraph
>>> print[igraph.__version__]
0.9.6
48 là thuộc tính cấu trúc hay là thuộc tính đỉnh. Để giải quyết sự mơ hồ này, tên thuộc tính cấu trúc phải luôn được đặt trước dấu gạch dưới [
>>> import igraph
>>> print[igraph.__version__]
0.9.6
50] khi được sử dụng để lọc. Ví dụ, để tìm các đỉnh có bậc lớn hơn 2

Ngoài ra còn có một vài thuộc tính cấu trúc đặc biệt để chọn các cạnh

  • Sử dụng

    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    51 hoặc
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    52 trong danh sách đối số từ khóa của bộ lọc
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    53 dựa trên các đỉnh nguồn của các cạnh. e. g. , để chọn tất cả các cạnh xuất phát từ Claire [người có chỉ số đỉnh 2]

    >>> g
    
    
    0

  • Sử dụng bộ lọc

    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    54 hoặc
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    55 dựa trên các đỉnh mục tiêu. Điều này khác với
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    51 và
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    52 nếu đồ thị có hướng

  • >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    58 lấy một đối tượng
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    16 hoặc một danh sách hoặc tập hợp các chỉ số đỉnh và chọn tất cả các cạnh xuất phát và kết thúc trong tập hợp đỉnh đã cho. Chẳng hạn, biểu thức sau chọn tất cả các cạnh giữa Claire [chỉ số đỉnh 2], Dennis [chỉ số đỉnh 3] và Esther [chỉ số đỉnh 4]

    >>> g
    
    
    1

    Chúng tôi cũng có thể đã sử dụng một đối tượng

    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    16

    >>> g
    
    
    2

  • >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    61 lấy một bộ bao gồm hai đối tượng hoặc danh sách
    >>> import igraph
    >>> print[igraph.__version__]
    0.9.6
    
    16 chứa chỉ số đỉnh hoặc đối tượng
    >>> g.add_edges[[[0,1], [1,2]]]
    
    76 và chọn tất cả các cạnh bắt nguồn từ một trong các tập hợp này và kết thúc ở tập hợp kia. e. g. , để chọn tất cả các cạnh kết nối nam với nữ

    >>> g
    
    
    3

Tìm một đỉnh hoặc một cạnh với một số thuộc tính

Trong nhiều trường hợp, chúng tôi đang tìm kiếm một đỉnh hoặc cạnh của biểu đồ có một số thuộc tính và chúng tôi không quan tâm đến một trong các kết quả phù hợp được trả về nếu có nhiều kết quả phù hợp hoặc chúng tôi biết trước rằng sẽ chỉ có một kết quả phù hợp. Một ví dụ điển hình là tra cứu các đỉnh theo tên của chúng trong thuộc tính

>>> import igraph
>>> print[igraph.__version__]
0.9.6
64. Các đối tượng
>>> import igraph
>>> print[igraph.__version__]
0.9.6
16 và
>>> import igraph
>>> print[igraph.__version__]
0.9.6
00 cung cấp phương thức
>>> import igraph
>>> print[igraph.__version__]
0.9.6
67 cho các trường hợp sử dụng đó.
>>> import igraph
>>> print[igraph.__version__]
0.9.6
67 hoạt động tương tự như
>>> import igraph
>>> print[igraph.__version__]
0.9.6
32, nhưng nó chỉ trả về kết quả khớp đầu tiên nếu có nhiều kết quả khớp và đưa ra một ngoại lệ nếu không tìm thấy kết quả khớp. Chẳng hạn, để tra cứu đỉnh tương ứng với Claire, người ta có thể làm điều này

>>> g

4

Tra cứu một tên không xác định sẽ mang lại một ngoại lệ

>>> g

5

Tra cứu các đỉnh theo tên

Tra cứu các đỉnh theo tên là một hoạt động rất phổ biến và việc nhớ tên của các đỉnh trong biểu đồ thường dễ dàng hơn nhiều so với ID của chúng. Cuối cùng, igraph xử lý thuộc tính

>>> import igraph
>>> print[igraph.__version__]
0.9.6
64 của các đỉnh một cách đặc biệt; . Để làm cho mọi thứ trở nên dễ dàng hơn, igraph chấp nhận tên đỉnh [hầu hết] ở bất kỳ đâu mà nó mong đợi ID đỉnh và cũng chấp nhận các bộ sưu tập [danh sách, bộ dữ liệu, v.v.] tên đỉnh ở bất kỳ đâu mà nó mong đợi danh sách ID đỉnh hoặc thực thể
>>> import igraph
>>> print[igraph.__version__]
0.9.6
16. e. g, bạn có thể tra cứu mức độ [số lần kết nối] của Dennis một cách đơn giản như sau

Hay cách khác

>>> g

6

Ánh xạ giữa tên đỉnh và ID được duy trì trong suốt bằng igraph trong nền; . Tuy nhiên, tính duy nhất của tên đỉnh không được thực thi;

Xử lý đồ thị dưới dạng ma trận kề

Ma trận kề là một cách khác để tạo biểu đồ. Trong ma trận kề, các hàng và cột được gắn nhãn bởi các đỉnh của đồ thị. các phần tử của ma trận cho biết đỉnh i và j có cạnh chung hay không [i, j]. Ma trận kề cho đồ thị ví dụ là

>>> g

7

Ví dụ: Claire [

>>> import igraph
>>> print[igraph.__version__]
0.9.6
72] được kết nối trực tiếp với Alice [người có chỉ số đỉnh 0], Dennis [chỉ số 3], Esther [chỉ số 4] và Frank [chỉ số 5], nhưng không kết nối với Bob [chỉ số 1] hay George [

Bố cục và âm mưu

Đồ thị là một đối tượng toán học trừu tượng không có biểu diễn cụ thể trong không gian 2D hoặc 3D. Điều này có nghĩa là bất cứ khi nào chúng ta muốn trực quan hóa một đồ thị, trước tiên chúng ta phải tìm một ánh xạ từ các đỉnh đến tọa độ trong không gian hai hoặc ba chiều, tốt nhất là theo cách dễ nhìn. Một nhánh riêng của lý thuyết đồ thị, cụ thể là vẽ đồ thị, cố gắng giải quyết vấn đề này thông qua một số thuật toán bố cục đồ thị. igraph thực hiện khá nhiều thuật toán bố cục và cũng có thể vẽ chúng lên màn hình hoặc thành tệp PDF, PNG hoặc SVG bằng thư viện Cairo

Quan trọng

Để làm theo các ví dụ của tiểu mục này, bạn cần có các ràng buộc Python của thư viện Cairo. Chương trước [] cho bạn biết thêm về cách cài đặt các liên kết Python của Cairo

Thuật toán bố trí

Các phương thức bố cục trong igraph sẽ được tìm thấy trong đối tượng

>>> g.add_edges[[[0,1], [1,2]]]
5 và chúng luôn bắt đầu bằng
>>> import igraph
>>> print[igraph.__version__]
0.9.6
74. Bảng sau đây tóm tắt chúng

Tên phương thức

Tên ngắn

Mô tả thuật toán

>>> import igraph
>>> print[igraph.__version__]
0.9.6
75

>>> import igraph
>>> print[igraph.__version__]
0.9.6
76,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
77

Bố cục xác định đặt các đỉnh trên một vòng tròn

>>> import igraph
>>> print[igraph.__version__]
0.9.6
78

>>> import igraph
>>> print[igraph.__version__]
0.9.6
79

Thuật toán bố cục đệ quy phân tán cho đồ thị lớn

>>> import igraph
>>> print[igraph.__version__]
0.9.6
80

>>> import igraph
>>> print[igraph.__version__]
0.9.6
81

Thuật toán hướng lực Fruchterman-Reingold

>>> import igraph
>>> print[igraph.__version__]
0.9.6
82

>>> import igraph
>>> print[igraph.__version__]
0.9.6
83,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
84

Thuật toán hướng lực Fruchterman-Reingold trong không gian ba chiều

>>> import igraph
>>> print[igraph.__version__]
0.9.6
85

>>> import igraph
>>> print[igraph.__version__]
0.9.6
86

Thuật toán hướng lực Kamada-Kawai

>>> import igraph
>>> print[igraph.__version__]
0.9.6
87

>>> import igraph
>>> print[igraph.__version__]
0.9.6
88,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
89

Thuật toán hướng lực Kamada-Kawai trong không gian ba chiều

>>> import igraph
>>> print[igraph.__version__]
0.9.6
90

>>> import igraph
>>> print[igraph.__version__]
0.9.6
91,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
92,
>>> import igraph
>>> print[igraph.__version__]
0.9.6
93

Thuật toán Bố cục đồ thị lớn cho đồ thị lớn

>>> import igraph
>>> print[igraph.__version__]
0.9.6
94

>>> import igraph
>>> print[igraph.__version__]
0.9.6
95

Đặt các đỉnh hoàn toàn ngẫu nhiên

>>> import igraph
>>> print[igraph.__version__]
0.9.6
96

>>> import igraph
>>> print[igraph.__version__]
0.9.6
97

Đặt các đỉnh hoàn toàn ngẫu nhiên trong không gian 3D

>>> import igraph
>>> print[igraph.__version__]
0.9.6
98

>>> import igraph
>>> print[igraph.__version__]
0.9.6
99,
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
00

Bố cục cây Reingold-Tilford, hữu ích cho [gần như] đồ thị dạng cây

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
01

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
02

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
00

Bố cục cây Reingold-Tilford với chuyển đổi sau tọa độ cực, hữu ích cho [gần như] đồ thị dạng cây

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
04

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
05,
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
06,
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
07

Bố cục xác định đặt các đỉnh cách đều nhau trên bề mặt của hình cầu

Các thuật toán bố cục có thể được gọi trực tiếp hoặc sử dụng phương thức bố cục phổ biến có tên là

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
08

>>> g

8

Đối số đầu tiên của phương thức

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
08 phải là tên viết tắt của thuật toán bố cục [xem bảng bên trên]. Tất cả các đối số từ khóa và vị trí còn lại được chuyển nguyên vẹn cho phương thức bố cục đã chọn. Chẳng hạn, hai cuộc gọi sau đây là hoàn toàn tương đương

>>> g

9

Các phương thức bố cục trả về một đối tượng

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
10 hoạt động gần giống như một danh sách các danh sách. Mỗi mục danh sách trong đối tượng
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
10 tương ứng với một đỉnh trong biểu đồ gốc và chứa tọa độ đỉnh trong không gian 2D hoặc 3D. Các đối tượng
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
10 cũng chứa một số phương thức hữu ích để dịch, chia tỷ lệ hoặc xoay tọa độ theo lô. Tuy nhiên, tiện ích chính của các đối tượng
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
10 là bạn có thể chuyển chúng đến hàm
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14 cùng với biểu đồ để có được bản vẽ 2D

Vẽ biểu đồ bằng cách sử dụng bố cục

Chẳng hạn, chúng ta có thể vẽ sơ đồ mạng xã hội tưởng tượng của mình bằng thuật toán bố cục Kamada-Kawai như sau

>>> print[g]
IGRAPH U--- 0 0 --
0

Thao tác này sẽ mở một trình xem ảnh bên ngoài hiển thị hình ảnh đại diện của mạng, giống như hình trên hình sau [mặc dù vị trí chính xác của các nút có thể khác trên máy của bạn do bố cục không xác định]

Mạng xã hội của chúng tôi với thuật toán bố cục Kamada-Kawai

Nếu bạn thích sử dụng matplotlib làm công cụ vẽ đồ thị, hãy tạo một trục và sử dụng đối số

>>> import igraph
>>> print[igraph.__version__]
0.9.6
04

>>> print[g]
IGRAPH U--- 0 0 --
1

Hmm, điều này không quá đẹp cho đến nay. Một bổ sung tầm thường sẽ là sử dụng tên làm nhãn đỉnh và tô màu các đỉnh theo giới tính. Các nhãn đỉnh được lấy từ thuộc tính

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
16 theo mặc định và màu của đỉnh được xác định bởi thuộc tính
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
17, vì vậy chúng ta chỉ cần tạo các thuộc tính này và vẽ lại biểu đồ

>>> print[g]
IGRAPH U--- 0 0 --
2

Lưu ý rằng chúng tôi chỉ đơn giản là sử dụng lại đối tượng bố cục trước đó ở đây, nhưng chúng tôi cũng chỉ định rằng chúng tôi cần một ô nhỏ hơn [300 x 300 pixel] và lề lớn hơn xung quanh biểu đồ để vừa với các nhãn [20 pixel]. Kết quả là

Mạng xã hội của chúng tôi - với tên là nhãn và giới tính là màu sắc

Thay vì chỉ định các thuộc tính trực quan dưới dạng thuộc tính đỉnh và cạnh, bạn cũng có thể đặt chúng làm đối số từ khóa cho

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14

>>> print[g]
IGRAPH U--- 0 0 --
3

Cách tiếp cận thứ hai này được ưu tiên nếu bạn muốn giữ các thuộc tính của biểu diễn trực quan của biểu đồ của bạn tách biệt với chính biểu đồ đó. Bạn có thể chỉ cần thiết lập một từ điển Python chứa các đối số từ khóa mà bạn sẽ chuyển đến

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14, sau đó sử dụng toán tử dấu hoa thị kép [
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
20] để chuyển các thuộc tính kiểu dáng cụ thể của bạn cho
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14

>>> print[g]
IGRAPH U--- 0 0 --
4

Cốt truyện cuối cùng cho thấy các mối quan hệ chính thức với các đường kẻ dày trong khi các mối quan hệ không chính thức với các đường mảnh

Mạng xã hội của chúng tôi - cũng cho thấy mối quan hệ nào là chính thức

Tóm lại tất cả. có các thuộc tính đỉnh và cạnh đặc biệt tương ứng với biểu diễn trực quan của biểu đồ. Các thuộc tính này ghi đè cài đặt mặc định của igraph [xem cấu hình-igraph để ghi đè cài đặt mặc định trên toàn hệ thống]. Hơn nữa, các đối số từ khóa thích hợp được cung cấp cho

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14 sẽ ghi đè các thuộc tính trực quan được cung cấp bởi các thuộc tính đỉnh và cạnh. Hai bảng sau đây tóm tắt các thuộc tính trực quan được sử dụng thường xuyên nhất cho các đỉnh và các cạnh, tương ứng

Thuộc tính Vertex kiểm soát sơ đồ biểu đồ

tên thuộc tính

Đối số từ khóa

Mục đích

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
17

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
24

Màu của đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
25

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
26

Họ phông chữ của đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
16

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
28

Nhãn của đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
29

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
30

Vị trí của nhãn đỉnh trên đường tròn xung quanh đỉnh. Đây là một góc tính bằng radian, với số 0 thuộc về phía bên phải của đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
31

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
32

Màu của nhãn đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
33

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
34

Khoảng cách của nhãn đỉnh từ chính đỉnh đó, so với kích thước đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
35

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
36

Cỡ chữ của nhãn đỉnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
37

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
38

Vẽ thứ tự các đỉnh. Các đỉnh có tham số thứ tự nhỏ hơn sẽ được vẽ trước

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
39

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
40

Hình dạng của đỉnh. Các hình đã biết là. ________ 441, ________ 276, ________ 443, ________ 444, ________ 445. Một số bí danh cũng được chấp nhận, xem

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
46

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
47

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
48

Kích thước của đỉnh tính bằng pixel

Thuộc tính cạnh kiểm soát sơ đồ biểu đồ

tên thuộc tính

Đối số từ khóa

Mục đích

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
17

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
50

Màu sắc của cạnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
51

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
52

Độ cong của cạnh. Giá trị dương tương ứng với các cạnh cong theo hướng CCW, số âm tương ứng với các cạnh cong theo chiều kim đồng hồ [CW]. Zero đại diện cho các cạnh thẳng.

>>> import igraph
>>> print[igraph.__version__]
0.9.6
37 được hiểu là 0. 5,
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
54 được hiểu là số không. Điều này rất hữu ích để hiển thị nhiều cạnh. Xem thêm đối số từ khóa
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
55 thành
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
25

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
58

Họ phông chữ của cạnh

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
59

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
60

Kích thước [chiều dài] của đầu mũi tên trên cạnh nếu đồ thị có hướng, tương ứng với 15 pixel

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
61

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
62

Chiều rộng của đầu mũi tên trên cạnh nếu biểu đồ được định hướng, tương ứng với 10 pixel

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
63

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
64

Chiều rộng của cạnh tính bằng pixel

Đối số từ khóa chung của
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14

Các cài đặt này có thể được chỉ định làm đối số từ khóa cho hàm

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14 để kiểm soát giao diện tổng thể của cốt truyện

Đối số từ khóa

Mục đích

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
55

Có tự động xác định độ cong của các cạnh trong biểu đồ có nhiều cạnh hay không. Giá trị mặc định là

>>> import igraph
>>> print[igraph.__version__]
0.9.6
37 cho các biểu đồ có ít hơn 10. 000 cạnh và
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
54 nếu không

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
70

Hộp giới hạn của cốt truyện. Đây phải là một bộ chứa chiều rộng và chiều cao mong muốn của ô. Cốt truyện mặc định rộng 600 pixel và cao 600 pixel

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
71

Bố cục được sử dụng. Nó có thể là một phiên bản của

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
10, một danh sách các bộ chứa tọa độ X-Y hoặc tên của thuật toán bố cục. Giá trị mặc định là
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
73, tự động chọn thuật toán bố cục dựa trên kích thước và tính liên kết của biểu đồ

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
74

Lề trên, phải, dưới và trái của ô tính bằng pixel. Đối số này phải là một danh sách hoặc bộ và các phần tử của nó sẽ được sử dụng lại nếu bạn chỉ định một danh sách hoặc bộ có ít hơn bốn phần tử

Chỉ định màu sắc trong các ô

igraph hiểu các thông số kỹ thuật màu sau bất cứ nơi nào nó mong đợi một màu [e. g. , cạnh, đỉnh hoặc màu nhãn trong các thuộc tính tương ứng]

Tên màu X11

Xem danh sách tên màu X11 trong Wikipedia để biết danh sách đầy đủ. Ngoài ra, bạn có thể thấy các phím của igraph. vẽ. màu sắc. từ điển known_colors. Tên màu không phân biệt chữ hoa chữ thường trong igraph nên “DarkBlue” cũng có thể được viết thành “darkblue”

Đặc tả màu trong cú pháp CSS

Đây là một chuỗi theo một trong các định dạng sau [trong đó R, G và B lần lượt biểu thị các thành phần màu đỏ, xanh lá cây và xanh dương]

  • $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    75, các thành phần nằm trong khoảng từ 0 đến 255 ở định dạng thập lục phân. Ví dụ.
    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    76

  • $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    77, các thành phần nằm trong khoảng từ 0 đến 15 ở định dạng thập lục phân. Ví dụ.
    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    78

  • $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    79, các thành phần nằm trong khoảng từ 0 đến 255 hoặc từ 0% đến 100%. Ví dụ.
    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    80 hoặc
    $ igraph
    No configuration file, using defaults
    igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
    Type "copyright", "credits" or "license" for more information.
    >>>
    
    81

Liệt kê, bộ hoặc chuỗi giá trị RGB được phân tách bằng khoảng trắng

Ví dụ.

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
82,
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
83 hoặc
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
84

Tiết kiệm lô đất

igraph có thể được sử dụng để tạo các biểu đồ có chất lượng xuất bản bằng cách yêu cầu hàm

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
14 lưu biểu đồ vào một tệp thay vì hiển thị trên màn hình. Điều này có thể được thực hiện đơn giản bằng cách chuyển tên tệp đích làm đối số bổ sung sau chính biểu đồ. Định dạng ưa thích được suy ra từ phần mở rộng. igraph có thể lưu vào bất kỳ thứ gì được Cairo hỗ trợ, bao gồm các tệp SVG, PDF và PNG. Các tệp SVG hoặc PDF sau đó có thể được chuyển đổi sang định dạng PostScript [
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
86] hoặc PostScript được đóng gói [
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
87] nếu bạn thích điều đó, trong khi các tệp PNG có thể được chuyển đổi thành TIF [
$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
88]

>>> print[g]
IGRAPH U--- 0 0 --
5

igraph và thế giới bên ngoài

Không có mô-đun đồ thị nào hoàn chỉnh nếu không có một số loại chức năng nhập/xuất cho phép gói giao tiếp với các chương trình và bộ công cụ bên ngoài. igraph cũng không ngoại lệ. nó cung cấp các chức năng để đọc các định dạng biểu đồ phổ biến nhất và lưu các đối tượng

>>> g.add_edges[[[0,1], [1,2]]]
5 vào các tệp tuân theo các thông số định dạng này. Bảng sau đây tóm tắt các định dạng mà igraph có thể đọc hoặc ghi

Định dạng

Tên ngắn

phương pháp đọc

phương pháp nhà văn

danh sách liền kề

>>> import igraph
>>> print[igraph.__version__]
0.9.6
92

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
91

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
92

[một. k. a. ]

Ma trận kề

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
93

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
94

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
95

DIMACS

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
96

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
97

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
98

ĐL

$ igraph
No configuration file, using defaults
igraph 0.9.6 running inside Python 3.9.6 [default, Jun 29 2021, 05:25:02]
Type "copyright", "credits" or "license" for more information.
>>>
99

>>> g

00

chưa được hỗ trợ

danh sách cạnh

>>> g

01,
>>> g

02,
>>> g

03

>>> g

04

>>> g

05

GraphViz

>>> g

06,
>>> g

07

chưa được hỗ trợ

>>> g

08

GML

>>> g

09

>>> g

10

>>> g

11

GraphML

>>> g

12

>>> g

13

>>> g

14

GraphML được nén

>>> g

15

>>> g

16

>>> g

17

LEDA

>>> g

18

chưa được hỗ trợ

>>> g

19

danh sách cạnh được gắn nhãn

>>> g

20

>>> g

21

>>> g

22

[một. k. a. ]

định dạng Pajek

>>> g

23,
>>> g

24

>>> g

25

>>> g

26

đồ thị ngâm

>>> g.add_edges[[[0,1], [1,2]]]
25

>>> g

28

>>> g

29

Để làm bài tập, hãy tải xuống biểu đồ biểu diễn nghiên cứu của câu lạc bộ karate Zachary nổi tiếng từ

>>> g

30, giải nén và thử tải vào igraph. Vì đây là tệp GraphML nên bạn phải sử dụng phương thức trình đọc GraphML từ bảng bên trên [đảm bảo bạn sử dụng đường dẫn thích hợp tới tệp đã tải xuống]

>>> print[g]
IGRAPH U--- 0 0 --
6

Nếu bạn muốn chuyển đổi cùng một biểu đồ sang định dạng của Pajek chẳng hạn, bạn có thể thực hiện điều đó bằng phương pháp Pajek writer từ bảng trên

>>> print[g]
IGRAPH U--- 0 0 --
7

Ghi chú

Hầu hết các định dạng đều có những hạn chế riêng; . Đặt cược tốt nhất của bạn có lẽ là GraphML hoặc GML nếu bạn muốn lưu biểu đồ igraph ở định dạng có thể đọc được từ gói bên ngoài và bạn muốn giữ nguyên các thuộc tính số và chuỗi. Danh sách cạnh và NCOL cũng được nếu bạn không có thuộc tính [tuy nhiên, NCOL hỗ trợ tên đỉnh và trọng số cạnh]. Nếu bạn không muốn sử dụng biểu đồ của mình bên ngoài igraph nhưng bạn muốn lưu trữ chúng cho phiên sau, định dạng biểu đồ chọn lọc đảm bảo rằng bạn sẽ nhận lại chính xác cùng một biểu đồ. Định dạng biểu đồ được chọn sử dụng mô-đun

>>> g.add_edges[[[0,1], [1,2]]]
25 của Python để lưu trữ và đọc biểu đồ

Có hai phương pháp trợ giúp là tốt.

>>> g

32 là điểm vào chung cho các phương thức trình đọc cố gắng suy ra định dạng phù hợp từ phần mở rộng tệp.
>>> g

33 ngược lại với
>>> g

32. nó cho phép bạn lưu biểu đồ trong đó định dạng ưa thích lại được suy ra từ tiện ích mở rộng. Việc phát hiện định dạng của
>>> g

32 và
>>> g

33 có thể bị ghi đè bởi đối số từ khóa
>>> g

37 chấp nhận tên viết tắt của các định dạng từ bảng trên

>>> print[g]
IGRAPH U--- 0 0 --
8

Đi đâu tiếp theo

Hướng dẫn này mới chỉ là phần nổi của những gì igraph có thể làm. Các kế hoạch dài hạn của tôi là mở rộng hướng dẫn này thành tài liệu kiểu thủ công thích hợp để igraph trong các chương tiếp theo. Trong thời gian chờ đợi, hãy xem tài liệu API đầy đủ sẽ cung cấp thông tin về hầu hết mọi lớp, chức năng hoặc phương thức igraph. Một điểm khởi đầu tốt là tài liệu của lớp Graph. Nếu bạn gặp khó khăn, trước tiên hãy thử hỏi trong nhóm Thảo luận của chúng tôi - có thể có ai đó có thể giúp bạn ngay lập tức

Chủ Đề