2015-09-09 15 views
17

Voglio usare la mappa dei colori "viridis" (http://bids.github.io/colormap/) e non aggiornerò ancora la versione di sviluppo 1.5. Così, ho scaricato colormaps.py da https://github.com/BIDS/colormap. Sfortunatamente, non sono in grado di farlo funzionare. Questo è quello che faccio:Come utilizzare viridis in 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) 

Questo mi dà una ValueError, il traceback termina con,

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

(E poi la lista completa delle mappe di colore installati originariamente.)

Ogni pensiero su come risolvere questo problema?

risposta

14

Per impostare viridis come mappa di colori usando set_cmap , devi prima registrarlo:

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, proprio quello di cui ho bisogno. – ukrutt

11

Piuttosto che usare set_cmap, che richiede un'istanza matplotlib.colors.Colormap, è possibile impostare la cmap direttamente nella pcolormesh chiamata

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

Anche una buona soluzione! – ukrutt

+0

Cosa potrebbe causare "ImportError: nessun modulo chiamato colormaps'? – Annan

+0

@Annan: hai scaricato 'colormaps.py' da https://github.com/BIDS/colormap? – tom

3

Quello che ho fatto è quello di copiare il

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

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

e aggiungere:

from matplotlib.colors import ListedColormap 

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

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

Scarica il colormaps.py da here, quindi:

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

Done !