2015-09-09 14 views
17

Chcę używać colormap "viridis" (http://bids.github.io/colormap/), a ja nie będę jeszcze aktualizować do wersji rozwojowej 1.5. W ten sposób pobrałem colormaps.py z https://github.com/BIDS/colormap. Niestety, nie jestem w stanie sprawić, by działało. To co mam zrobić:Jak używać viridis w matplotlib 1.4

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) 

To daje mi ValueError Z traceback kończąc,

ValueError: Colormap viridis is not recognized. Possible values are: Spectral, summer, coolwarm, ...

(A potem pełna lista pierwotnie zainstalowanych colormaps.)

Wszelkie myśli o jak rozwiązać ten problem?

Odpowiedz

14

Aby ustawić viridis jako swoją colormap użyciu set_cmap , musisz najpierw zarejestrować:

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) 
+0

Awesome, właśnie tego potrzebuję. – ukrutt

11

Zamiast używać set_cmap, który wymaga instancji matplotlib.colors.Colormap można ustawić cmap bezpośrednio w pcolormesh rozmowy

(cmaps.viridis jest 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) 
+0

Również dobre rozwiązanie! – ukrutt

+0

Co spowodowałoby 'ImportError: Brak modułów o nazwie colormaps'? – Annan

+0

@Anan: Czy pobrałeś 'colormaps.py' z https://github.com/BIDS/colormap? – tom

3

co zrobiłem, to po prostu skopiować

_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]] 

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

i dodać:

from matplotlib.colors import ListedColormap 

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

plt.register_cmap(name='viridis', cmap=viridis) 
plt.set_cmap(viridis) 
2

Pobierz colormaps.py z here, a następnie:

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

Gotowe !