Подтвердить что ты не робот

Как использовать viridis в matplotlib 1.4

Я хочу использовать colormap "viridis" (http://bids.github.io/colormap/), и я пока не буду обновлять версию 1.5. Таким образом, я загрузил colormaps.py из https://github.com/BIDS/colormap. К сожалению, я не могу заставить его работать. Это то, что я делаю:

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)

Это дает мне ValueError, трассировка заканчивается на

ValueError: Colormap viridis не распознается. Возможные значения: Spectral, summer, coolwarm,...

(И затем полный список изначально установленных цветовых палитр.)

Любые мысли о том, как исправить эту проблему?

4b9b3361

Ответ 1

Чтобы установить viridis в качестве цветовой карты с помощью set_cmap, вы должны сначала ее зарегистрировать:

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)

Ответ 2

Вместо использования set_cmap, для которого требуется экземпляр matplotlib.colors.Colormap, вы можете установить cmap непосредственно в вызове pcolormesh

(cmaps.viridis является 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)

Ответ 3

Я только что скопировал

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

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

и добавьте:

from matplotlib.colors import ListedColormap

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

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

Ответ 4

Загрузите colormaps.py из здесь, затем:

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

Готово!