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%处的颜色
-
方式二,直接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符合
总结
虽然上文提到了两种方式,但方式2基本上是方式1的延伸,且直接内嵌在函数中,而无需进行手动切分,方便了不少
上一篇: 栈之进制转换SDUT1252
下一篇: Java 复制PPT幻灯片