我试图显示散点图的颜色条,但我不断收到错误:
TypeError:首先必须set_array为mappable
这就是我正在做的事情:
# Just plotting the values of data that are nonzero
x_data = numpy.nonzero(data)[0] # x coordinates
y_data = numpy.nonzero(data)[1] # y coordinates
# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])
pts = plt.scatter(x_data, y_data, marker='s', color=data)
plt.colorbar(pts)
如果我对plt.colorbar(pts)
行进行评论,我的绘图正确,但我也想绘制颜色条。
提前谢谢。
答案 0 :(得分:11)
您传递的是特定的rgb值,因此matplotlib无法构建色彩映射,因为它不知道它与原始数据的关系。
不要将值映射到RGB颜色,而是让scatter
为您处理。
而不是:
# Mapping the values to RGBA colors
data = plt.cm.jet(data[x_data, y_data])
pts = plt.scatter(x_data, y_data, marker='s', color=data)
执行:
pts = plt.scatter(x_data, y_data, marker='s', c=data[x_data, y_data])
(只需将您最初传入c
的内容传递给plt.cm.jet
。)
然后你就可以正常构建一个色彩图。具体错误告诉您颜色是手动设置的,而不是通过set_array
设置(处理将数据值数组映射到RGB)。