可以用ListedColormap
和LinearSegmentedColormap
制作色标,其中ListedColormap由给定的颜色列表产生色标时不会自动插值,LinearSegmentedColormap则会在给定的颜色之间插值。
这两个类都属于matplotlib.colors
,使用前需要导入import matplotlib.colors as mcolors
实例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
xi = np.linspace(-5, 5, 500)
yi = np.linspace(-5, 5, 500)
X,Y=np.meshgrid(xi,yi)
Z=(X**2+X*Y-Y**2)
#自定义色标
colors=["magenta","blueviolet","royalblue","aqua","springgreen",
"greenyellow","yellow","orangered","red","white"]
clrmap=mcolors.LinearSegmentedColormap.from_list("mycmap",colors)
plt.pcolor(X,Y,Z,cmap=clrmap)
plt.colorbar()
#Set equal scaling (i.e., make circles circular)
#by changing dimensions of the plot box.
plt.axis('scaled')
plt.show()
输出图片