我正在尝试用一张颜色地图绘制一组多边形。我设置了一个ScalarMappable对象,并从该ScalarMappable生成多边形的颜色,但当我尝试添加一个颜色条时,出现了错误:
TypeError: You must first set_array for mappable
“set_array” 的文档并没有详细说明其作用,因此我不清楚它在做什么,是否需要给它赋值,如果需要,应该赋什么值。
请问有人能解释一下 set_array 的作用,并告诉我如何处理吗?
plt.clf()
fig, ax = plt.subplots(1,1)
# Set color mappable
range_min = df.col1.min()
range_max = df.col1.max()
cmap = matplotlib.cm.ScalarMappable(
norm = mcolors.Normalize(range_min, range_max),
cmap = plt.get_cmap('binary'))
for i in polygonDict.keys():
ax.add_patch(ds.PolygonPatch(polygonDict[i], fc = cmap.to_rgba(df.col1.loc[i])))
fig.colorbar(cmap, ax = ax)
ScalarMappable
通常不会直接像这样使用,而是作为其他类(如PolygonCollection
)的混入使用,以允许您在R^1 -> RGBA
之间进行映射。 - tacaswellPolygonCollection
,因为mpl会为你处理所有的颜色映射,我猜它在绘制时会更高效,并且代码更易读。 - tacaswellPolygonCollection
的调用,这样就可以解决排序问题。 - tacaswell