使用自定義色彩對映

除了在 colormaps 參考中定義的內建色彩圖(以及它們的反轉貼圖,其名稱附加了'_r')之外,還可以定義自定義色彩對映。關鍵是 matplotlib.cm模組。

下面的示例使用 cm.register_cmap 定義一個非常簡單的色彩對映,包含單一顏色,在資料範圍內,在完全不透明和完全透明之間插入顏色的不透明度(alpha 值)。請注意,從 colormap 的角度來看,重要的線是 cm 的匯入,register_cmap 的呼叫,以及 colormap 到 plot_surface 的傳遞。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as 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()

StackOverflow 文件

在更復雜的場景中,可以定義 R / G / B(/ A)值的列表,其中 matplotlib 線性插值以確定相應圖中使用的顏色。