From a15b5527765ffb5e1b80e60b05ec589977f05ee8 Mon Sep 17 00:00:00 2001 From: Thomas Bury Date: Sun, 20 Jun 2021 17:18:27 +0200 Subject: [PATCH] fix a bug, extend the readme --- README.md | 79 ++++++++++++++++++++++++++++++++++++++++++- pics/mpl.png | Bin 0 -> 31478 bytes pics/mpl2.png | Bin 0 -> 31165 bytes scicomap/__init__.py | 2 +- scicomap/scicomap.py | 6 ++-- scicomap/utils.py | 7 ++-- setup.py | 2 +- 7 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 pics/mpl.png create mode 100644 pics/mpl2.png diff --git a/README.md b/README.md index c039945..53e364c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ # Scientific color maps +## Blog post + +[Scicomap Medium blog post (free)](https://towardsdatascience.com/your-colour-map-is-bad-heres-how-to-fix-it-lessons-learnt-from-the-event-horizon-telescope-b82523f09469) + ## Installation ```shell @@ -97,7 +101,7 @@ import scicomap as sc import matplotlib.pyplot as plt # the thing that should not be -ugly_jet = plt.get_cmap("YlOrBr") +ugly_jet = plt.get_cmap("jet") sc_map = sc.ScicoMiscellaneous(cmap=ugly_jet) f=sc_map.assess_cmap(figsize=(22,10)) ``` @@ -219,6 +223,74 @@ which render as +# Use with matplotlib + +## Use a corrected colormap in a matplotlib figure + +```python +import matplotlib.pyplot as plt +import matplotlib as mpl +import scicomap as sc +from scicomap.utils import _fn_with_roots + +# load the color map +div_map = sc.ScicoDiverging(cmap='watermelon') + +# correct the colormap +div_map.unif_sym_cmap(lift=15, + bitonic=False, + diffuse=True) + +# get the fixed color map +fixed_cmap = div_map.get_mpl_color_map() +print(type(fixed_cmap)) + +# use it as you like +im = _fn_with_roots() +norm = mpl.colors.CenteredNorm() +divnorm = mpl.colors.TwoSlopeNorm(vmin=-1, vcenter=0, vmax=1.25) +fig = plt.figure(figsize=(3,3), facecolor="white") +ax = fig.add_subplot(1, 1, 1, facecolor="white") +pos = ax.imshow(im, cmap=fixed_cmap, aspect="auto", norm=divnorm) +fig.colorbar(pos, ax=ax); +``` + + +## Correct a matplotlib colormap + + + +```python +import matplotlib.pyplot as plt +import matplotlib as mpl +import scicomap as sc +from scicomap.utils import _fn_with_roots + +# load the color map +mpl_cmap_obj = plt.get_cmap("PRGn") +div_map = sc.ScicoDiverging(cmap=mpl_cmap_obj) + +# correct the colormap +div_map.unif_sym_cmap(lift=None, + bitonic=False, + diffuse=True) + +# get the fixed color map +fixed_cmap = div_map.get_mpl_color_map() +print(type(fixed_cmap)) + +# use it as you like +im = _fn_with_roots() +norm = mpl.colors.CenteredNorm() +divnorm = mpl.colors.TwoSlopeNorm(vmin=-1, vcenter=0, vmax=1.25) +fig = plt.figure(figsize=(3,3), facecolor="white") +ax = fig.add_subplot(1, 1, 1, facecolor="white") +pos = ax.imshow(im, cmap=fixed_cmap, aspect="auto", norm=divnorm) +fig.colorbar(pos, ax=ax); +``` + + + # Comparing color maps You can easily compare, raw or corrected, color maps using a picture of your choice @@ -353,6 +425,11 @@ sc.plot_colormap(ctype='qualitative', # Changes log +### 0.3 + + - Add a section "how to use with matplotlib" + - [Bug] Center diverging color map in examples + ### 0.2 - [Bug] Fix typo in chart titles diff --git a/pics/mpl.png b/pics/mpl.png new file mode 100644 index 0000000000000000000000000000000000000000..c735bbbee243da4b6dfb457177bd186e2036357b GIT binary patch literal 31478 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 literal 0 HcmV?d00001 diff --git a/scicomap/__init__.py b/scicomap/__init__.py index 144390f..af3fe56 100644 --- a/scicomap/__init__.py +++ b/scicomap/__init__.py @@ -3,7 +3,7 @@ from . import cmath from . import cblind -__version__ = "0.2" +__version__ = "0.3" __all__ = ["scicomap", "datasets", "cmath", "cblind", "utils"] # bound to upper level diff --git a/scicomap/scicomap.py b/scicomap/scicomap.py index 17f2a4c..b5ac477 100644 --- a/scicomap/scicomap.py +++ b/scicomap/scicomap.py @@ -577,7 +577,8 @@ def draw_example(self, facecolor="black", figsize=(20, 20)): arr_3d=[(xpyr, ypyr, zpyr), (per_x, per_z, per_z)], figsize=figsize, facecolor=facecolor, - cname=self.cname) + cname=self.cname, + norm=True) return fig @@ -747,7 +748,8 @@ def draw_example(self, facecolor="black", figsize=(20, 20)): arr_3d=[(xpyr, ypyr, zpyr), (per_x, per_z, per_z)], figsize=figsize, facecolor=facecolor, - cname=self.cname) + cname=self.cname, + norm=True) return fig diff --git a/scicomap/utils.py b/scicomap/utils.py index 92c950e..799fa49 100644 --- a/scicomap/utils.py +++ b/scicomap/utils.py @@ -1,5 +1,6 @@ import itertools import numpy as np +import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.image as mpimg from matplotlib.colors import ListedColormap @@ -151,7 +152,7 @@ def _plot_e_field(ax, cmap, n_neg_charges=2, facecolor="black", title=False): return ax -def _plot_examples(color_map, images, arr_3d, figsize, facecolor, cname, cblind=True): +def _plot_examples(color_map, images, arr_3d, figsize, facecolor, cname, cblind=True, norm=False): """Create the figure based on the provided images, continuous colormaps""" fig = plt.figure(figsize=figsize, facecolor=facecolor) n_images = len(images) @@ -167,6 +168,7 @@ def _plot_examples(color_map, images, arr_3d, figsize, facecolor, cname, cblind= idx_3d = 0 n_rows = len(c_maps) n_cols = len(images) + for c_map, im in itertools.product(c_maps, images): if isinstance(im, str) and ('3D' in im): @@ -186,8 +188,9 @@ def _plot_examples(color_map, images, arr_3d, figsize, facecolor, cname, cblind= ax = fig.add_subplot(n_rows, n_cols, axi, facecolor=facecolor) ax = _plot_complex_arg(ax, c_map, facecolor, title=axi <= n_cols) else: + cmap_norm = mpl.colors.CenteredNorm() if norm else None ax = fig.add_subplot(n_rows, n_cols, axi, facecolor=facecolor) - ax.imshow(im, cmap=c_map, aspect="auto") + ax.imshow(im, cmap=c_map, aspect="auto", norm=cmap_norm) ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) ax.set_title(sub_title[axi - 1], color=title_color, fontsize=16, loc="left") diff --git a/setup.py b/setup.py index 59e7adf..609616b 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ setup( name="scicomap", - version="0.2", + version="0.3", description="Scientific color maps", long_description=README, long_description_content_type="text/markdown",