我试图显示我的散点图的颜色条,但我一直得到错误:
TypeError:你必须先set_array for 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)
行,我得到了正确的绘图,但我也想绘制颜色条。
提前感谢。
您正在传递特定的rgb值,因此matplotlib无法构建颜色图,因为它不知道它与原始数据的关系。
让scatter
为您处理,而不是将值映射为RGB颜色。
代替:
# 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])
(将原来传递给plt.cm.jet
的内容传递给c
)
那么你就可以正常地构造一个颜色图了。具体的错误是告诉您颜色已经手动设置,而不是通过set_array
设置(它处理将数据值数组映射到RGB)。