如何在matplotlib中绘制不均匀的颜色条

时间:2019-10-11 11:51:49

标签: matplotlib

尝试了midnorm和列出的颜色图,但是不知道如何将前面的0-20变成统一的多色(图片显示缩写,请不要介意),不知道如何绘制效果图片! !帮助

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为您应该使用

MyCmap=colors.LinearSegmentedColormap.from_list("", list(zip(lvals,cvals)))
就像此solution中的

一样(即使那里是对数刻度)。查看已接受答案的结尾。

答案 1 :(得分:0)

在这种情况下,可以使用BoundaryNormListedColormap。为颜色图的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()

enter image description here

相关问题