diff options
Diffstat (limited to 'src/python/gudhi/persistence_graphical_tools.py')
-rw-r--r-- | src/python/gudhi/persistence_graphical_tools.py | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/python/gudhi/persistence_graphical_tools.py b/src/python/gudhi/persistence_graphical_tools.py index 6a74a6ca..848dc03e 100644 --- a/src/python/gudhi/persistence_graphical_tools.py +++ b/src/python/gudhi/persistence_graphical_tools.py @@ -11,6 +11,7 @@ from os import path from math import isfinite import numpy as np +from functools import lru_cache from gudhi.reader_utils import read_persistence_intervals_in_dimension from gudhi.reader_utils import read_persistence_intervals_grouped_by_dimension @@ -19,6 +20,7 @@ __author__ = "Vincent Rouvreau, Bertrand Michel, Theo Lacombe" __copyright__ = "Copyright (C) 2016 Inria" __license__ = "MIT" +_gudhi_matplotlib_use_tex = True def __min_birth_max_death(persistence, band=0.0): """This function returns (min_birth, max_death) from the persistence. @@ -56,6 +58,17 @@ def _array_handler(a): else: return a +@lru_cache(maxsize=1) +def _matplotlib_can_use_tex(): + """This function returns True if matplotlib can deal with LaTeX, False otherwise. + The returned value is cached. + """ + try: + from matplotlib import checkdep_usetex + return checkdep_usetex(True) + except ImportError: + print("This function is not available, you may be missing matplotlib.") + def plot_persistence_barcode( persistence=[], @@ -106,8 +119,12 @@ def plot_persistence_barcode( import matplotlib.pyplot as plt import matplotlib.patches as mpatches from matplotlib import rc - plt.rc('text', usetex=True) - plt.rc('font', family='serif') + if _gudhi_matplotlib_use_tex and _matplotlib_can_use_tex(): + plt.rc('text', usetex=True) + plt.rc('font', family='serif') + else: + plt.rc('text', usetex=False) + plt.rc('font', family='DejaVu Sans') if persistence_file != "": if path.isfile(persistence_file): @@ -251,8 +268,12 @@ def plot_persistence_diagram( import matplotlib.pyplot as plt import matplotlib.patches as mpatches from matplotlib import rc - plt.rc('text', usetex=True) - plt.rc('font', family='serif') + if _gudhi_matplotlib_use_tex and _matplotlib_can_use_tex(): + plt.rc('text', usetex=True) + plt.rc('font', family='serif') + else: + plt.rc('text', usetex=False) + plt.rc('font', family='DejaVu Sans') if persistence_file != "": if path.isfile(persistence_file): @@ -423,8 +444,12 @@ def plot_persistence_density( import matplotlib.patches as mpatches from scipy.stats import kde from matplotlib import rc - plt.rc('text', usetex=True) - plt.rc('font', family='serif') + if _gudhi_matplotlib_use_tex and _matplotlib_can_use_tex(): + plt.rc('text', usetex=True) + plt.rc('font', family='serif') + else: + plt.rc('text', usetex=False) + plt.rc('font', family='DejaVu Sans') if persistence_file != "": if dimension is None: |