散点图colorbar - Matplotlib

时间:2014-07-18 20:15:42

标签: python matplotlib plot colorbar

我试图显示散点图的颜色条,但我不断收到错误:

  

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)行进行评论,我的绘图正确,但我也想绘制颜色条。

提前谢谢。

1 个答案:

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