【问题标题】:How to use viridis in matplotlib 1.4如何在 matplotlib 1.4 中使用 viridis
【发布时间】:2015-12-05 17:05:18
【问题描述】:

我想使用颜色映射“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:无法识别颜色图绿色。可能的值有:Spectral、summer、coolwarm、...

(然后是最初安装的颜色图的完整列表。)

关于如何解决此问题的任何想法?

【问题讨论】:

    标签: python matplotlib colormap


    【解决方案1】:

    要使用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)
    

    【讨论】:

    • 太棒了,正是我需要的。
    【解决方案2】:

    你可以直接在pcolormesh调用中设置cmap,而不是使用set_cmap,这需要matplotlib.colors.Colormap实例

    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)
    

    【讨论】:

    • 什么会导致ImportError: No module named colormaps
    • @Annan:你从github.com/BIDS/colormap下载colormaps.py了吗?
    • @tom 感谢您回复我的问题。我没有意识到它是一个单独的模块(我一直在跳过一些关于 'viridis' cmap 的问题并且没有完全阅读您正在回答的问题)。我实际上是通过将 matplotlib 更新到最新版本来解决这个问题 - 对我来说是 1.5.3。
    • @安南。是的,显然获得viridis 的最佳方式是使用最新版本的matplotlib(即任何版本的>= 1.5)。然而,这个问题和答案是关于将viridis 与不包含 viridis 颜色图的 matplotlib (1.4) 版本一起使用
    【解决方案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】:

      here下载colormaps.py,然后:

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

      完成!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-04
        • 2010-12-24
        • 2014-10-14
        • 2022-08-04
        • 1970-01-01
        相关资源
        最近更新 更多