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

Я хочу использовать цветовую карту "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 не распознается. Возможные значения: спектральный, летний, прохладно-теплый, ...

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

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


person ukrutt    schedule 09.09.2015    source источник


Ответы (4)


Чтобы установить 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)
person aganders3    schedule 09.09.2015
comment
Круто, как раз то, что мне нужно. - person ukrutt; 09.09.2015

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

(cmaps.viridis is a 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)
person tmdavison    schedule 09.09.2015
comment
Что может вызвать ImportError: No module named colormaps ? - person AnnanFay; 10.10.2016
comment
@Annan: Вы загрузили colormaps.py с github.com/BIDS/colormap? - person tmdavison; 10.10.2016
comment
@tom Спасибо за ответ на мой запрос. Я не знал, что это был отдельный модуль (я прыгал по нескольким вопросам о cmap «viridis» и не полностью прочитал вопрос, на который вы отвечали). Я фактически исправил проблему, обновив matplotlib до последней версии, которая для меня 1.5.3. - person AnnanFay; 10.10.2016
comment
@ Аннан. Да, очевидно, что лучший способ получить viridis — это использовать последнюю версию matplotlib (т. е. любую версию >= 1.5). Однако этот вопрос и ответ касались использования viridis с версией matplotlib (1.4), которая не включала цветовую карту viridis. - person tmdavison; 10.10.2016

Что я сделал, так это просто скопировал

_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)
person P i    schedule 05.11.2015

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

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

Сделанный!

person Han Zhengzu    schedule 29.03.2016