【问题标题】:Broken / combined colormaps损坏/组合的颜色图
【发布时间】:2013-12-12 08:28:35
【问题描述】:

我正在用 imshow 绘制一个 2D 标量场,我想清楚地对比负值和正值。有没有办法实现由其他两个组成的颜色图(例如,jet,例如,hot 为正,cool 为负)?

【问题讨论】:

    标签: colors matplotlib plot


    【解决方案1】:

    您可以从现有的 cmap 中读取颜色并添加它们,这相当简单,但缺点也很少。如果原始颜色图具有不同数量的颜色,则两者的“边缘”都不会居中。

    如果它们确实具有相同的数字,则生成的 cmap 将是对称的,但只有当正值等于负值时,“边缘”才会为零,例如 -2 & 2 或 -4 & 4 等。

    这可以这样做:

    import matplotlib.pyplot as plt
    import numpy as np
    
    cool = plt.cm.cool
    hot = plt.cm.hot
    
    cool_vals = [cool(i) for i in range(cool.N)]
    hot_vals = [hot(i) for i in range(hot.N)]
    
    comb_vals = cool_vals + hot_vals
    
    # random hue with constant sat and value
    new_cmap = matplotlib.colors.ListedColormap(comb_vals)
    
    plt.imshow(np.arange(20*20).reshape(20,20)-199., interpolation='none', cmap=new_cmap)
    plt.colorbar()
    

    我不知道 Matplotlib 中有非常花哨的方法。有一个全新的 Python 模块“TrollImage”,它有一个非常好的使用颜色图的实现。它针对的是卫星图像,但颜色图部分当然适用于任何类型的图像。

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 2011-04-08
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 2020-10-17
      • 1970-01-01
      相关资源
      最近更新 更多