Skip to content

Commit f12ff09

Browse files
committed
Register more "clipped" color maps, use viridis_clip as default for level()
1 parent a684134 commit f12ff09

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

sfs/plot2d.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,26 @@
88
from . import util as _util
99

1010

11-
def _register_cmap_clip(name, original_cmap, alpha):
11+
def _register_cmap_clip(name, original_name, alpha):
1212
"""Create a color map with "over" and "under" values."""
13-
from matplotlib.colors import LinearSegmentedColormap
14-
cdata = _plt.cm.datad[original_cmap]
15-
if isinstance(cdata, dict):
16-
cmap = LinearSegmentedColormap(name, cdata)
17-
else:
18-
cmap = LinearSegmentedColormap.from_list(name, cdata)
19-
cmap.set_over([alpha * c + 1 - alpha for c in cmap(1.0)[:3]])
20-
cmap.set_under([alpha * c + 1 - alpha for c in cmap(0.0)[:3]])
13+
cmap = _plt.get_cmap(original_name)
14+
cmap = cmap.with_extremes(
15+
under=cmap.get_under() * [1, 1, 1, alpha],
16+
over=cmap.get_over() * [1, 1, 1, alpha])
17+
cmap.name = name
2118
_plt.colormaps.register(cmap=cmap)
2219

2320

21+
_register_cmap_clip('cividis_clip', 'cividis', 0.6)
22+
_register_cmap_clip('cividis_r_clip', 'cividis_r', 0.6)
23+
_register_cmap_clip('viridis_clip', 'viridis', 0.6)
24+
_register_cmap_clip('viridis_r_clip', 'viridis_r', 0.6)
25+
2426
# The 'coolwarm' colormap is based on the paper
2527
# "Diverging Color Maps for Scientific Visualization" by Kenneth Moreland
2628
# http://www.sandia.gov/~kmorel/documents/ColorMaps/
27-
# already registered in MPL 3.9.0
28-
try:
29-
_register_cmap_clip('coolwarm_clip', 'coolwarm', 0.7)
30-
except ImportError:
31-
pass
29+
_register_cmap_clip('coolwarm_clip', 'coolwarm', 0.6)
30+
_register_cmap_clip('coolwarm_r_clip', 'coolwarm_r', 0.6)
3231

3332

3433
def _register_cmap_transparent(name, color):
@@ -313,8 +312,8 @@ def amplitude(p, grid, *, xnorm=None, cmap='coolwarm_clip',
313312
return im
314313

315314

316-
def level(p, grid, *, xnorm=None, power=False, cmap=None, vmax=3, vmin=-50,
317-
**kwargs):
315+
def level(p, grid, *, xnorm=None, power=False, cmap='viridis_clip',
316+
vmax=3, vmin=-50, **kwargs):
318317
"""Two-dimensional plot of level (dB) of sound field.
319318
320319
Takes the same parameters as `sfs.plot2d.amplitude()`.
@@ -336,7 +335,7 @@ def level(p, grid, *, xnorm=None, power=False, cmap=None, vmax=3, vmin=-50,
336335
def particles(x, *, trim=None, ax=None, xlabel='x (m)', ylabel='y (m)',
337336
edgecolors=None, marker='.', s=15, **kwargs):
338337
"""Plot particle positions as scatter plot.
339-
338+
340339
Parameters
341340
----------
342341
x : triple or pair of array_like

0 commit comments

Comments
 (0)