matplotlib 使用自定义颜色图

示例

除了在颜色图参考中定义的内置颜色图('_r'及其名称的后缀以及它们的反向图)之外,还可以定义自定义颜色图。关键是matplotlib.cm模块。

以下示例使用定义了一种非常简单的颜色图cm.register_cmap,其中包含一种颜色,并且颜色的不透明度(alpha值)在数据范围内的完全不透明和完全透明之间进行插值。请注意,从颜色图的角度来看,重要的几行是导入cm,调用register_cmap和将颜色图传递到plot_surface。

importmatplotlib.pyplotas plt

from mpl_toolkits.mplot3d import Axes3D

importmatplotlib.cmas cm

# generate data for sphere

from numpy import pi,meshgrid,linspace,sin,cos

th,ph = meshgrid(linspace(0,pi,25),linspace(0,2*pi,51))

x,y,z = sin(th)*cos(ph),sin(th)*sin(ph),cos(th)

# define custom colormap with fixed colour and alpha gradient

# use simple linear interpolation in the entire scale

cm.register_cmap(name='alpha_gradient',

                 data={'red':   [(0.,0,0),

                                 (1.,0,0)],

                       'green': [(0.,0.6,0.6),

                                 (1.,0.6,0.6)],

                       'blue':  [(0.,0.4,0.4),

                                 (1.,0.4,0.4)],

                       'alpha': [(0.,1,1),

                                 (1.,0,0)]})

# plot sphere with custom colormap; constrain mapping to between |z|=0.7 for enhanced effect

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

ax.plot_surface(x,y,z,cmap='alpha_gradient',vmin=-0.7,vmax=0.7,rstride=1,cstride=1,linewidth=0.5,edgecolor='b')

ax.set_xlim([-1,1])

ax.set_ylim([-1,1])

ax.set_zlim([-1,1])

ax.set_aspect('equal')

plt.show()

在更复杂的情况下,可以定义一列R / G / B(/ A)值,matplotlib对其进行线性插值,以便确定相应图中使用的颜色。

以上是 matplotlib 使用自定义颜色图 的全部内容, 来源链接: utcz.com/z/321369.html

回到顶部