我正在尝试显示散点图的颜色条,但我一直在收到 错误消息:
TypeError:您必须首先为可映射的set_array
这是我要绘制的内容:
# 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)则可以正确地获得图形,但是我 也想绘制颜色条。
plt.colorbar(pts)
先感谢您。
您要传递特定的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)
Do:
pts = plt.scatter(x_data, y_data, marker='s', c=data[x_data, y_data])
(只需传入c您最初传入的内容即可plt.cm.jet。)
c
plt.cm.jet
然后,您将能够正常构造一个颜色图。特定的错误是 告诉您颜色是手动设置的,而不是通过颜色设置的 set_array(通过处理将数据值数组映射到RGB)。
set_array