散点图colorbar - Matplotlib

pce*_*con 19 python plot matplotlib 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)
Run Code Online (Sandbox Code Playgroud)

如果我评论这条线plt.colorbar(pts)我得到了正确的情节,但我也想绘制颜色条.

先感谢您.

Joe*_*ton 15

您传递的是特定的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)
Run Code Online (Sandbox Code Playgroud)

做:

pts = plt.scatter(x_data, y_data, marker='s', c=data[x_data, y_data])
Run Code Online (Sandbox Code Playgroud)

(只需传入c你最初传入的内容plt.cm.jet.)

然后你就可以正常构建一个色彩图.特定错误告诉您颜色已手动设置,而不是通过设置set_array(处理将数据值数组映射到RGB).