matplotlib 使用你自己想要的color map

最近使用matplotlib画图,想要使用一个三段的红-绿-蓝映射,并且带有一定梯度,就像这样:


不过,发现matplotlib中虽然带有很多映射方式,但是只有brg方式,没有rgb方式

就像这样:


nx.draw_networkx(G,pos, edge_color = edge_length, edge_cmap = plt.get_cmap('brg'))

那么怎么办呢?如果直接将[0,1]等分三段,分别是纯红、纯绿、纯蓝,是非常难看的。

于是将官网例子http://scipy.github.io/old-wiki/pages/Cookbook/Matplotlib/Show_colormaps

(这是非常好的例子,各种color map 方式都有)

修改了一下:

import matplotlib
import matplotlib.colors as col
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
# example 2: use the "fromList() method
startcolor = '#ff0000'   #红色,读者可以自行修改
midcolor = '#00ff00'     #绿色,读者可以自行修改
endcolor = '#0000ff'          #蓝色,读者可以自行修改
cmap2 = col.LinearSegmentedColormap.from_list('own2',[startcolor,midcolor,endcolor])
# extra arguments are N=256, gamma=1.0
cm.register_cmap(cmap=cmap2)
# we can skip name here as it was already defined 

当register_cmap执行完毕后,调用该color map 的名称 'own2',即可。

cm.get_cmap('own2')

就获得了文章开头的红-绿-蓝有过渡的颜色映射。函数自动使用插值计算0-1之间的颜色。




你可能感兴趣的:(matplotlib 使用你自己想要的color map)