欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matplotlib中的colormap使用

程序员文章站 2022-05-20 21:54:40
...

colormap的对象分析

matplotlib中自带cm库,存储了一些colormap,可供开发人员调用。colormap对象的类型为

matplotlib.colors.ListedColormap object

属于matplotlib中自定义的一个对象类型

对象调用

matplotlib中的这一对象调用需要如下步骤

import matplotlib.pyplot as plt
#首先选择matplot中有的colormap,可以选择的colormap库会在文章末尾做个转述
cmap = plt.cm.get_cmap('inferno')   #获取cmap对象

接下来分为两种调用方式

  • 方式一,传入可迭代的对象,如数组,其中含有数个rgba数组,如下

    
    
    colors = cmap([0,128,256])  #获得一个3*4的矩阵,每一行都是一个rgba数组
    
    #这一写法与如下以1为限的小数写法相同
    colors = cmap([0,0.5,1])
    #--------------------------------
    #array([[1.        , 0.96862745, 0.9254902 , 1.        ],
    #       [0.9874356 , 0.55048058, 0.34797386, 1.        ],
    #       [0.49803922, 0.        , 0.        , 1.        ]])
    #--------------------------------
    
    sizes = [10,30,60]
    plt.pie(sizes, colors=colors, shadow=True)
    plt.show()
    #得到三色饼图
    

    colormap的颜色值本身是个指定范围的色域,因而通过向cmap中传入一个1n的矩阵,可以返回一个n4的映射矩阵,如下所示,三色饼图的三个颜色明显是颜色棒0%,50%,100%处的颜色
    matplotlib中的colormap使用
    matplotlib中的colormap使用

  • 方式二,直接cmap对象传递给函数内部的cmap属性,函数在内部进行颜色值的分配

    #如上述颜色棒
    gradient = np.vstack((np.linspace(0, 1, 256), np.linspace(0, 1, 256)))
    #gradient.shape为(2,256)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.imshow(gradient, aspect='auto', cmap=cmap)
    ax.set_axis_off()
    
    #--------------或者---------------------
    gradient = np.vstack((np.linspace(9, 18, 3), np.linspace(0, 9, 3), np.linspace(18, 33, 3)))
    #gradient.shape为(3,3)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.imshow(gradient, aspect='auto', cmap=cmap)
    ax.set_axis_off()
    
    

    得到块状的分布图,块状数量分布与gradient.shpae的值3*3符合
    matplotlib中的colormap使用

总结

虽然上文提到了两种方式,但方式2基本上是方式1的延伸,且直接内嵌在函数中,而无需进行手动切分,方便了不少

相关标签: python