matplotlib 中封装了一些颜色变化映射,被封装在cm 中。但在创建颜色映射的时候,不一定需要调用plt.cm.XXX ,基于plt.get_cmap 同样可以做到伪彩图映射。
通过dir(plt.cm) 可以获取plt.cm 中封装的所有伪彩色,如图所示
代码如下,其中关键的绘图代码为ax.imshow(gradient, cmap=plt.get_cmap(name)) ,imshow 用于展示图片,cmap 即为图片所上的伪彩色。
import matplotlib.pyplot as plt
import numpy as np
names = []
for n in dir(plt.cm):
try:
plt.set_cmap(n)
names.append(n)
except: pass
gradient = np.linspace(0, 1, 256)
gradient = np.vstack((gradient, gradient))
fig, axes = plt.subplots(nrows=int(len(names)/2),ncols=2)
fig.subplots_adjust(top=0.99, bottom=0.01, left=0.1, right=0.99)
axes = axes.reshape(len(names))
for ax, name in zip(axes, names):
ax.imshow(gradient, cmap=plt.get_cmap(name))
pos = list(ax.get_position().bounds)
x_text = pos[0] - 0.01
y_text = pos[1] + pos[3]/2.
fig.text(x_text, y_text, name, va='center', ha='right', fontsize=8)
for ax in axes:
ax.set_axis_off()
plt.show()
这些预设的伪彩映射共计166种,如果观察它们的名字可以发现,右侧的图和左侧相比只在末尾多了一个_r ,其图像正好和左侧对称,即_r 色正好是非_r 色的倒映射。
matplotlib 官方将左侧的这些颜色映射分成了6类,具体内容可查看Choosing Colormaps in Matplotlib。
|