散点图颜色栏- Matplotlib



我试图显示我的散点图的颜色条,但我一直得到错误:

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)。