summaryrefslogtreecommitdiff
path: root/src/python/doc/persistence_graphical_tools_user.rst
blob: e1d28c7192bf6102fb975190b9cdfbabe246f443 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
:orphan:

.. To get rid of WARNING: document isn't included in any toctree

Persistence graphical tools user manual
=======================================
Definition
----------
.. include:: persistence_graphical_tools_sum.inc


Show persistence as a barcode
-----------------------------

This function can display the persistence result as a barcode:

.. plot::
   :include-source:

    import matplotlib.pyplot as plt
    import gudhi

    off_file = gudhi.__root_source_dir__ + '/data/points/tore3D_300.off'
    point_cloud = gudhi.read_points_from_off_file(off_file=off_file)

    rips_complex = gudhi.RipsComplex(points=point_cloud, max_edge_length=0.7)
    simplex_tree = rips_complex.create_simplex_tree(max_dimension=3)
    diag = simplex_tree.persistence(min_persistence=0.4)

    gudhi.plot_persistence_barcode(diag)
    plt.show()

Show persistence as a diagram
-----------------------------

This function can display the persistence result as a diagram:

.. plot::
   :include-source:

    import matplotlib.pyplot as plt
    import gudhi

    # rips_on_tore3D_1307.pers obtained from write_persistence_diagram method
    persistence_file=gudhi.__root_source_dir__ + \
        '/data/persistence_diagram/rips_on_tore3D_1307.pers'
    ax = gudhi.plot_persistence_diagram(persistence_file=persistence_file,
        legend=True)
    # We can modify the title, aspect, etc.
    ax.set_title("Persistence diagram of a torus")
    ax.set_aspect("equal")  # forces to be square shaped
    plt.show()

Note that (as barcode and density) it can also take a simple `np.array` 
of shape (N x 2) encoding a persistence diagram (in a given dimension).

.. plot::
    :include-source:
    
    import matplotlib.pyplot as plt
    import gudhi
    import numpy as np
    d = np.array([[0., 1.], [1., 2.], [1., np.inf]])
    gudhi.plot_persistence_diagram(d)
    plt.show()

Persistence density
-------------------

:Requires: `SciPy <installation.html#scipy>`_

If you want more information on a specific dimension, for instance:

.. plot::
   :include-source:

    import matplotlib.pyplot as plt
    import gudhi
    # rips_on_tore3D_1307.pers obtained from write_persistence_diagram method
    persistence_file=gudhi.__root_source_dir__ + \
        '/data/persistence_diagram/rips_on_tore3D_1307.pers'
    birth_death = gudhi.read_persistence_intervals_in_dimension(
        persistence_file=persistence_file,
        only_this_dim=1)
    pers_diag = [(1, elt) for elt in birth_death]
    # Use subplots to display diagram and density side by side
    fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))
    gudhi.plot_persistence_diagram(persistence=pers_diag,
        axes=axes[0])
    gudhi.plot_persistence_density(persistence=pers_diag,
        dimension=1, legend=True, axes=axes[1])
    plt.show()

LaTeX support
-------------

If you are facing issues with `LaTeX <installation.html#latex>`_ rendering, you can still deactivate LaTeX rendering by
saying:

.. code-block:: python

    import gudhi
    gudhi.persistence_graphical_tools._gudhi_matplotlib_use_tex=False