summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Rouvreau <10407034+VincentRouvreau@users.noreply.github.com>2020-06-29 08:22:30 -0700
committerGitHub <noreply@github.com>2020-06-29 08:22:30 -0700
commitd58fe553c806874d723c7e6d4fee368cc308e474 (patch)
treec790f169a35277e5483d4508e2fa7d82756e6b78 /src
parentcec4a5d7df6d5ed43511e94f9db580489979105a (diff)
parent0f9eb77804b3aba0b1321a2e1422bf38c43c9943 (diff)
Merge pull request #357 from VincentRouvreau/no_latex_for_matplotlib_if_not_available
No latex for matplotlib if not available
Diffstat (limited to 'src')
-rw-r--r--src/python/gudhi/persistence_graphical_tools.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/python/gudhi/persistence_graphical_tools.py b/src/python/gudhi/persistence_graphical_tools.py
index 6a74a6ca..c6766c70 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
@@ -56,6 +57,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=[],
@@ -105,9 +117,10 @@ def plot_persistence_barcode(
try:
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 _matplotlib_can_use_tex():
+ from matplotlib import rc
+ plt.rc('text', usetex=True)
+ plt.rc('font', family='serif')
if persistence_file != "":
if path.isfile(persistence_file):
@@ -250,9 +263,10 @@ def plot_persistence_diagram(
try:
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 _matplotlib_can_use_tex():
+ from matplotlib import rc
+ plt.rc('text', usetex=True)
+ plt.rc('font', family='serif')
if persistence_file != "":
if path.isfile(persistence_file):
@@ -422,9 +436,10 @@ def plot_persistence_density(
import matplotlib.pyplot as plt
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 _matplotlib_can_use_tex():
+ from matplotlib import rc
+ plt.rc('text', usetex=True)
+ plt.rc('font', family='serif')
if persistence_file != "":
if dimension is None: