- ObsPy Documentation (1.0.0)
- Module code
Source code for obspy.imaging.cm
# -*- coding: utf-8 -*-
"""
Module for ObsPy's default colormaps.
"Viridis" is matplotlib's new default colormap from version 2.0 onwards and is
based on a design by Eric Firing (@efiring, see
http://thread.gmane.org/gmane.comp.python.matplotlib.devel/13522/focus=13542).
Colormap of PQLX for PPSD is available as :const:`obspy.imaging.cm.pqlx`.
:copyright:
The ObsPy Development Team (devs@obspy.org)
:license:
GNU Lesser General Public License, Version 3
(https://www.gnu.org/copyleft/lesser.html)
"""
from __future__ import (absolute_import, division, print_function,
unicode_literals)
from future.builtins import * # NOQA @UnusedWildImport
import inspect
import os
import numpy as np
from matplotlib.cm import get_cmap
from matplotlib.colors import LinearSegmentedColormap
[docs]def _get_cmap(name, lut=None, reverse=False):
"""
Load a :class:`~matplotlib.colors.LinearSegmentedColormap` from
`segmentdata` dictionary saved as numpy compressed binary data.
:type name: str
:param name: Name of colormap to load, same as filename in
`obspy/imaging/data` without `.npz` file suffix.
:type lut: int
:param lut: Specifies the number of discrete color values in the colormap.
`None` to use matplotlib default value (continuous colormap).
:type reverse: bool
:param reverse: Whether to return the specified colormap reverted.
:rtype: :class:`~matplotlib.colors.LinearSegmentedColormap`
"""
directory = os.path.dirname(os.path.abspath(
inspect.getfile(inspect.currentframe())))
directory = os.path.join(directory, "data")
if name.endswith(".npz"):
name = name.rsplit(".npz", 1)[0]
filename = os.path.join(directory, name + ".npz")
data = dict(np.load(filename))
if reverse:
data_r = {}
for key, val in data.items():
# copied from matplotlib source, cm.py@f7a578656abc2b2c13 line 47
data_r[key] = [(1.0 - x, y1, y0) for x, y0, y1 in reversed(val)]
data = data_r
kwargs = lut and {"N": lut} or {}
cmap = LinearSegmentedColormap(name=name, segmentdata=data, **kwargs)
return cmap
viridis = _get_cmap("viridis")
viridis_r = _get_cmap("viridis", reverse=True)
obspy_sequential = viridis
obspy_sequential_r = viridis_r
obspy_divergent = get_cmap("RdBu_r")
obspy_divergent_r = get_cmap("RdBu")
pqlx = _get_cmap("pqlx")
if __name__ == '__main__':
import doctest
doctest.testmod(exclude_empty=True)