diff --git a/doc/source/tutorial.rst b/doc/source/tutorial.rst index ea2ce0e14..7ba2de653 100644 --- a/doc/source/tutorial.rst +++ b/doc/source/tutorial.rst @@ -8,7 +8,7 @@ Tutorial ======== -This page is a detailed tutorial of |igraph|'s Python capabilities. To get an quick impression of what |igraph| can do, check out the :doc:`tutorials/quickstart`. If you have not installed |igraph| yet, follow the :doc:`install`. +This page is a detailed tutorial of |igraph|'s Python capabilities. To get an quick impression of what |igraph| can do, check out the :doc:`tutorials/quickstart`. If you have not installed |igraph| yet, follow the section titled :doc:`install`. .. note:: For the impatient reader, see the :doc:`tutorials/index` page for short, self-contained examples. @@ -16,7 +16,7 @@ This page is a detailed tutorial of |igraph|'s Python capabilities. To get an qu Starting |igraph| ================= -The most common way to use |igraph| is as a named import within a Python environment (e.g. a bare Python shell, a `IPython`_ shell, a `Jupyter`_ notebook or JupyterLab instance, `Google Colab `_, or an `IDE `_):: +The most common way to use |igraph| is as a named import within a Python environment (e.g. a bare Python shell, an `IPython`_ shell, a `Jupyter`_ notebook or JupyterLab instance, `Google Colab `_, or an `IDE `_):: $ python Python 3.9.6 (default, Jun 29 2021, 05:25:02) @@ -79,10 +79,9 @@ This means: **U** ndirected graph with **10** vertices and **2** edges, with the .. note:: - :meth:`Graph.summary` is similar to ``print`` but does not list the edges, which is - convenient for large graphs with millions of edges:: + |igraph| also has a :func:`igraph.summary()` function, which is similar to ``print()`` but it does not list the edges. This is convenient for large graphs with millions of edges:: - >>> summary(g) + >>> ig.summary(g) IGRAPH U--- 10 2 -- @@ -206,7 +205,7 @@ answer can quickly be given by checking the degree distributions of the two grap Setting and retrieving attributes ================================= -As mentioned above, in |igraph| each vertex and each edge have a numeric id from ``0`` upwards. Deleting vertices or edges can therefore cause reassignments of vertex and/or edge IDs. In addition to IDs, vertex and edges can have *attributes* such as a name, coordinates for plotting, metadata, and weights. The graph itself can have such attributes too (e.g. a name, which will show in ``print`` or :meth:`Graph.summary`). In a sense, every :class:`Graph`, vertex and edge can be used as a Python dictionary to store and retrieve these attributes. +As mentioned above, vertices and edges of a graph in |igraph| have numeric IDs from ``0`` upwards. Deleting vertices or edges can therefore cause reassignments of vertex and/or edge IDs. In addition to IDs, vertices and edges can have *attributes* such as a name, coordinates for plotting, metadata, and weights. The graph itself can have such attributes too (e.g. a name, which will show in ``print`` or :meth:`Graph.summary`). In a sense, every :class:`Graph`, vertex and edge can be used as a Python dictionary to store and retrieve these attributes. To demonstrate the use of attributes, let us create a simple social network:: @@ -604,6 +603,8 @@ Method name Short name Algorithm description ``layout_circle`` ``circle``, Deterministic layout that places the ``circular`` vertices on a circle ------------------------------------ --------------- --------------------------------------------- +``layout_davidson_harel`` ``dh`` Davidson-Harel simulated annealing algorithm +------------------------------------ --------------- --------------------------------------------- ``layout_drl`` ``drl`` The `Distributed Recursive Layout`_ algorithm for large graphs ------------------------------------ --------------- --------------------------------------------- @@ -612,6 +613,10 @@ Method name Short name Algorithm description ``layout_fruchterman_reingold_3d`` ``fr3d``, Fruchterman-Reingold force-directed algorithm ``fr_3d`` in three dimensions ------------------------------------ --------------- --------------------------------------------- +``layout_graphopt`` ``graphopt`` The GraphOpt algorithm for large graphs +------------------------------------ --------------- --------------------------------------------- +``layout_grid`` ``grid`` Regular grid layout +------------------------------------ --------------- --------------------------------------------- ``layout_kamada_kawai`` ``kk`` Kamada-Kawai force-directed algorithm ------------------------------------ --------------- --------------------------------------------- ``layout_kamada_kawai_3d`` ``kk3d``, Kamada-Kawai force-directed algorithm @@ -621,6 +626,8 @@ Method name Short name Algorithm description ``lgl``, large graphs ``large_graph`` ------------------------------------ --------------- --------------------------------------------- +``layout_mds`` ``mds`` Multidimensional scaling layout +------------------------------------ --------------- --------------------------------------------- ``layout_random`` ``random`` Places the vertices completely randomly ------------------------------------ --------------- --------------------------------------------- ``layout_random_3d`` ``random_3d`` Places the vertices completely randomly in 3D @@ -630,7 +637,7 @@ Method name Short name Algorithm description ------------------------------------ --------------- --------------------------------------------- ``layout_reingold_tilford_circular`` ``rt_circular`` Reingold-Tilford tree layout with a polar coordinate post-transformation, useful for - ``tree`` (almost) tree-like graphs + (almost) tree-like graphs ------------------------------------ --------------- --------------------------------------------- ``layout_sphere`` ``sphere``, Deterministic layout that places the vertices ``spherical``, evenly on the surface of a sphere @@ -652,9 +659,9 @@ are passed intact to the chosen layout method. For instance, the following two c completely equivalent:: >>> layout = g.layout_reingold_tilford(root=[2]) - >>> layout = g.layout("rt", [2]) + >>> layout = g.layout("rt", root=[2]) -Layout methods return a :class:`~layout.Layout` object which behaves mostly like a list of lists. +Layout methods return a :class:`~layout.Layout` object, which behaves mostly like a list of lists. Each list entry in a :class:`~layout.Layout` object corresponds to a vertex in the original graph and contains the vertex coordinates in the 2D or 3D space. :class:`~layout.Layout` objects also contain some useful methods to translate, scale or rotate the coordinates in a batch.