proplot-dev / proplot

🎨 A succinct matplotlib wrapper for making beautiful, publication-quality graphics

Home Page:https://proplot.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Proplot changes names of colormaps to lowercase, breaking `matplotlib.pyplot.get_cmap`

scottstanie opened this issue · comments

Description

The names of available colormaps change after running import proplot. This makes it harder to insert proplot into existing scripts which contain other plots.

Steps to reproduce

In [1]: import matplotlib.pyplot as plt
In [3]: plt.get_cmap('RdBu')
Out[3]: <matplotlib.colors.LinearSegmentedColormap at 0x12745cbe0>

In [4]: import proplot as pplt
In [6]: plt.get_cmap('RdBu')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[6], line 1
----> 1 plt.get_cmap('RdBu')

File ~/miniconda3/envs/mapping/lib/python3.10/site-packages/matplotlib/cm.py:190, in get_cmap(name, lut)
    188 if isinstance(name, colors.Colormap):
    189     return name
--> 190 _api.check_in_list(sorted(_cmap_registry), name=name)
    191 if lut is None:
    192     return _cmap_registry[name]

File ~/miniconda3/envs/mapping/lib/python3.10/site-packages/matplotlib/_api/__init__.py:126, in check_in_list(_values, _print_supported_values, **kwargs)
    124 if val not in values:
    125     if _print_supported_values:
--> 126         raise ValueError(
    127             f"{val!r} is not a valid value for {key}; "
    128             f"supported values are {', '.join(map(repr, values))}")
    129     else:
    130         raise ValueError(f"{val!r} is not a valid value for {key}")

ValueError: 'RdBu' is not a valid value for name; supported values are '538', 'accent', 'acton', 'afmhot', 'algae', 'amp', 'autumn', 'balance', 'bam', 'bamako', 'bamo', 'batlow', 'batlowk', 'batloww', 'berlin', 'bilbao', 'binary', 'blues', 'blues1', 'blues2', 'blues3', 'blues4', 'blues5', 'blues6', 'blues7', 'blues8', 'blues9', 'bmh', 'bone', 'boreal', 'br', 'brbg', 'brg', 'broc', 'broco', 'browns1', 'browns2', 'browns3', 'browns4', 'browns5', 'browns6', 'browns7', 'browns8', 'browns9', 'buda', 'bugn', 'bukavu', 'bupu', 'bwr', 'cividis', 'classic', 'cmrmap', 'coldhot', 'colorblind', 'colorblind10', 'cool', 'coolwarm', 'copper', 'cork', 'corko', 'crest', 'cubehelix', 'curl', 'dark2', 'davos', 'deep', 'default', 'delta', 'dense', 'devon', 'div', 'drywet', 'dusk', 'fes', 'fire', 'flag', 'flare', 'flatui', 'ggplot', 'gist_earth', 'gist_gray', 'gist_heat', 'gist_ncar', 'gist_rainbow', 'gist_stern', 'gist_yarg', 'glacial', 'gnbu', 'gnuplot', 'gnuplot2', 'gray', 'greens', 'greens1', 'greens2', 'greens3', 'greens4', 'greens5', 'greens6', 'greens7', 'greens8', 'greys', 'haline', 'hawaii', 'hot', 'hsv', 'ice', 'icefire', 'imola', 'inferno', 'jet', 'lajolla', 'lapaz', 'lisbon', 'magma', 'mako', 'marine', 'matter', 'mono', 'monocycle', 'negpos', 'nipy_spectral', 'nuuk', 'ocean', 'oleron', 'oranges', 'oranges1', 'oranges2', 'oranges3', 'oranges4', 'orrd', 'oslo', 'oxy', 'paired', 'pastel1', 'pastel2', 'phase', 'pink', 'piyg', 'plasma', 'prgn', 'prism', 'pubu', 'pubugn', 'puor', 'purd', 'purples', 'purples1', 'purples2', 'purples3', 'qual1', 'qual2', 'rainbow', 'rdbu', 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'reds', 'reds1', 'reds2', 'reds3', 'reds4', 'reds5', 'rocket', 'roma', 'romao', 'seaborn', 'seismic', 'set1', 'set2', 'set3', 'solar', 'spectral', 'speed', 'spring', 'stellar', 'summer', 'sunrise', 'sunset', 'tab10', 'tab20', 'tab20b', 'tab20c', 'tableau', 'tempo', 'terrain', 'thermal', 'tofino', 'tokyo', 'turbid', 'turbo', 'turku', 'twilight', 'vanimo', 'vik', 'viko', 'viridis', 'vlag', 'winter', 'wistia', 'yellows1', 'yellows2', 'yellows3', 'yellows4', 'ylgn', 'ylgnbu', 'ylorbr', 'ylorrd'

Expected behavior: The matplotlib get_cmap was expected to work the same before and after importing proplot.

Equivalent steps in matplotlib

Example contains the matplotlib version.
Note that using lowercase before importing proplot errors, so one can't change all cmap names to lowercase.

Proplot version

In [2]: import matplotlib; print(matplotlib.__version__)
3.4.3

In [5]: pplt.__version__
Out[5]: '0.9.7'