[skip ci] documenting
This commit is contained in:
parent
c929af12c0
commit
d965d66319
|
@ -12,6 +12,9 @@ _eps = 216./24389.
|
||||||
_kappa = 24389./27.
|
_kappa = 24389./27.
|
||||||
_ref_white = np.array([.95047, 1.00000, 1.08883]) # Observer = 2, Illuminant = D65
|
_ref_white = np.array([.95047, 1.00000, 1.08883]) # Observer = 2, Illuminant = D65
|
||||||
|
|
||||||
|
# ToDo (if needed)
|
||||||
|
# - support alpha channel (paraview/ASCII/input)
|
||||||
|
# - support NaN color (paraview)
|
||||||
|
|
||||||
class Colormap(mpl.colors.ListedColormap):
|
class Colormap(mpl.colors.ListedColormap):
|
||||||
|
|
||||||
|
@ -19,18 +22,31 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_bounds(low,high,name='DAMASK colormap',N=256,model='rgb'):
|
def from_bounds(low,high,name='DAMASK colormap',N=256,model='rgb'):
|
||||||
"""
|
"""
|
||||||
Create a perceptually uniform colormap.
|
Create a perceptually uniform colormap from given bounds.
|
||||||
|
|
||||||
|
Colors are internally stored as R(ed) G(green) B(lue) values.
|
||||||
|
The colormap can be used in matplotlib/seaborn or exported to
|
||||||
|
file for external use.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
low : numpy.ndarray of shape (3)
|
low : numpy.ndarray of shape (3)
|
||||||
|
Color definition for minimum value.
|
||||||
high : numpy.ndarray of shape (3)
|
high : numpy.ndarray of shape (3)
|
||||||
|
Color definition for maximum value.
|
||||||
N : integer, optional
|
N : integer, optional
|
||||||
The number of color quantization levels.
|
The number of color quantization levels. Defaults to 256.
|
||||||
name : str, optional
|
name : str, optional
|
||||||
The name of the colormap. Defaults to `DAMASK colormap`.
|
The name of the colormap. Defaults to `DAMASK colormap`.
|
||||||
model : str
|
model : {'rgb', 'hsv', 'hsl', 'xyz', 'lab', 'msh'}
|
||||||
Colormodel used for low and high.
|
Colormodel used for input color definitions. Defaults to `rgb`.
|
||||||
|
The available color models are:
|
||||||
|
- 'rgb': R(ed) G(green) B(lue).
|
||||||
|
- 'hsv': H(ue) S(aturation) V(alue).
|
||||||
|
- 'hsl': H(ue) S(aturation) L(uminance).
|
||||||
|
- 'xyz': CIE Xyz.
|
||||||
|
- 'lab': CIE Lab.
|
||||||
|
- 'msh': Msh (for perceptual uniform interpolation).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
low_,high_ = map(np.array,[low,high])
|
low_,high_ = map(np.array,[low,high])
|
||||||
|
@ -78,7 +94,7 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_predefined(name,N=256):
|
def from_predefined(name,N=256):
|
||||||
"""
|
"""
|
||||||
Select from set of predefined colormaps.
|
Select from a set of predefined colormaps.
|
||||||
|
|
||||||
Predefined colormaps include native matplotlib colormaps
|
Predefined colormaps include native matplotlib colormaps
|
||||||
and common DAMASK colormaps.
|
and common DAMASK colormaps.
|
||||||
|
@ -147,7 +163,24 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
return Colormap(rev.colors,rev.name)
|
return Colormap(rev.colors,rev.name)
|
||||||
|
|
||||||
|
|
||||||
def to_file(self,fname=None,format='paraview'):
|
def to_file(self,fname=None,format='ParaView'):
|
||||||
|
"""
|
||||||
|
Export colormap to file for use in external programs.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
fname : file, str, or pathlib.Path, optional.
|
||||||
|
Filename to store results. If not given, the filename will
|
||||||
|
consist of the name of the colormap and an extension that
|
||||||
|
depends on the file format.
|
||||||
|
format : {'ParaView', 'ASCII', 'GOM', 'gmsh'}, optional
|
||||||
|
File format, defaults to 'ParaView'. Available formats are:
|
||||||
|
- ParaView: JSON file, extension '.json'.
|
||||||
|
- ASCII: Plain text file, extension '.txt'.
|
||||||
|
- GOM: Aramis GOM (DIC), extension '.legend'.
|
||||||
|
- Gmsh: Gmsh FEM mesh-generator, extension '.msh'.
|
||||||
|
|
||||||
|
"""
|
||||||
if fname is not None:
|
if fname is not None:
|
||||||
try:
|
try:
|
||||||
f = open(fname,'w')
|
f = open(fname,'w')
|
||||||
|
@ -216,8 +249,18 @@ class Colormap(mpl.colors.ListedColormap):
|
||||||
'}')
|
'}')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _interpolate_msh(frac,low, high):
|
def _interpolate_msh(frac,low,high):
|
||||||
|
"""
|
||||||
|
Interpolate in Msh color space.
|
||||||
|
|
||||||
|
This interpolation gives a perceptually uniform colormap.
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
https://www.kennethmoreland.com/color-maps/ColorMapsExpanded.pdf
|
||||||
|
https://www.kennethmoreland.com/color-maps/diverging_map.py
|
||||||
|
|
||||||
|
"""
|
||||||
def rad_diff(a,b):
|
def rad_diff(a,b):
|
||||||
return abs(a[2]-b[2])
|
return abs(a[2]-b[2])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue