答案 0 :(得分:0)
我认为您应该使用
MyCmap=colors.LinearSegmentedColormap.from_list("", list(zip(lvals,cvals)))
就像此solution中的一样(即使那里是对数刻度)。查看已接受答案的结尾。
答案 1 :(得分:0)
在这种情况下,可以使用BoundaryNorm
和ListedColormap
。为颜色图的N+1
种颜色定义N
边界,并在色条调用中使用spacing="proportional"
。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm, ListedColormap
cmap = ListedColormap(["black", "darkred", "crimson", "salmon", "navy", "violet", "yellow"])
bounds = [0,1,2,3,4,10,20,30]
norm = BoundaryNorm(bounds, cmap.N)
fig, ax = plt.subplots()
sc = ax.scatter(*np.random.rand(2,100), c=np.random.rand(100)*30, cmap=cmap, norm=norm)
fig.colorbar(sc, orientation="horizontal", spacing="proportional")
plt.show()