如何在matplotlib 1.4中使用viridis



我想使用颜色映射"viridis" (http://bids.github.io/colormap/),我不会更新到开发版本1.5。因此,我从https://github.com/BIDS/colormap下载了colormaps.py。不幸的是,我不能让它工作。我是这样做的:

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不可识别。可能的值有:光谱、夏季、冷暖、…

(然后是原始安装的颜色映射的完整列表)

对如何解决这个问题有什么想法吗?

要使用set_cmapviridis设置为您的颜色映射,您必须首先注册它:

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)

您可以直接在pcolormesh调用

中设置cmap,而不是使用需要matplotlib.colors.Colormap实例的set_cmap

(cmaps.viridismatplotlib.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)

我所做的就是复制

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

从这里下载colormaps.py,然后:

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

完成了!

最新更新