web-dev-qa-db-fra.com

Comment utiliser viridis dans matplotlib 1.4

Je veux utiliser la palette de couleurs "viridis" ( http://bids.github.io/colormap/ ), et je ne mettrai pas encore à jour la version de développement 1.5. Ainsi, j'ai téléchargé colormaps.py de https://github.com/BIDS/colormap . Malheureusement, je ne suis pas en mesure de le faire fonctionner. C'est ce que je fais:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

import colormaps as cmaps

img=mpimg.imread('stinkbug.png')
lum_img = np.flipud(img[:,:,0])

plt.set_cmap(cmaps.viridis)
imgplot = plt.pcolormesh(lum_img)

Cela me donne un ValueError, le retraçage se terminant par,

ValueError: Colormap viridis n'est pas reconnu. Les valeurs possibles sont: Spectral, summer, coolwarm, ...

(Et puis la liste complète des cartes de couleurs installées à l'origine.)

Des réflexions sur la façon de résoudre ce problème?

18
ukrutt

Pour définir viridis comme votre palette de couleurs à l'aide de set_cmap, vous devez d'abord l'enregistrer:

import colormaps as cmaps
plt.register_cmap(name='viridis', cmap=cmaps.viridis)
plt.set_cmap(cmaps.viridis)

img=mpimg.imread('stinkbug.png')
lum_img = np.flipud(img[:,:,0])
imgplot = plt.pcolormesh(lum_img)
15
aganders3

Plutôt que d'utiliser set_cmap, qui nécessite un matplotlib.colors.Colormap instance, vous pouvez définir cmap directement dans l'appel pcolormesh

(cmaps.viridis est un matplotlib.colors.ListedColormap)

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

import colormaps as cmaps

img=mpimg.imread('stinkbug.png')
lum_img = np.flipud(img[:,:,0])

imgplot = plt.pcolormesh(lum_img, cmap=cmaps.viridis)
11
tmdavison

J'ai simplement copié le

_viridis_data = [[0.267004, 0.004874, 0.329415],
                 [0.268510, 0.009605, 0.335427],
                 [0.269944, 0.014625, 0.341379],
                 :
                 [0.983868, 0.904867, 0.136897],
                 [0.993248, 0.906157, 0.143936]]

de https://github.com/BIDS/colormap/blob/master/colormaps.py

et ajouter:

from matplotlib.colors import ListedColormap

viridis = ListedColormap(_viridis_data, name='viridis')

plt.register_cmap(name='viridis', cmap=viridis)
plt.set_cmap(viridis)
3
P i

Téléchargez le colormaps.py depuis ici , puis:

import os,sys
scriptpath = "/Your downloading path/colormap-master/"
sys.path.append(os.path.abspath(scriptpath))
import colormaps as cmaps   

Terminé!

2
Han Zhengzu