summaryrefslogtreecommitdiff
path: root/src/python/gudhi/persistence_graphical_tools.py
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-06-25 09:47:30 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-06-25 09:47:30 +0200
commit0f9eb77804b3aba0b1321a2e1422bf38c43c9943 (patch)
tree1fd39d549ad27c8d16b405f407354299694559ce /src/python/gudhi/persistence_graphical_tools.py
parent06b502fb58b51671e5c32c2619f7f56efa66d2f2 (diff)
cache checkdep_usetex value
Diffstat (limited to 'src/python/gudhi/persistence_graphical_tools.py')
-rw-r--r--src/python/gudhi/persistence_graphical_tools.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/python/gudhi/persistence_graphical_tools.py b/src/python/gudhi/persistence_graphical_tools.py
index 5fba1b78..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,8 +117,7 @@ def plot_persistence_barcode(
try:
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
- from matplotlib import checkdep_usetex
- if checkdep_usetex(True):
+ if _matplotlib_can_use_tex():
from matplotlib import rc
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
@@ -252,8 +263,7 @@ def plot_persistence_diagram(
try:
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
- from matplotlib import checkdep_usetex
- if checkdep_usetex(True):
+ if _matplotlib_can_use_tex():
from matplotlib import rc
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
@@ -426,8 +436,7 @@ def plot_persistence_density(
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from scipy.stats import kde
- from matplotlib import checkdep_usetex
- if checkdep_usetex(True):
+ if _matplotlib_can_use_tex():
from matplotlib import rc
plt.rc('text', usetex=True)
plt.rc('font', family='serif')