一尘不染

Scatter plot colorbar - Matplotlib

python

我正在尝试显示散点图的颜色条,但我一直在收到
错误消息:

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)则可以正确地获得图形,但是我
也想绘制颜色条。

先感谢您。


阅读 258

收藏
2021-01-20

共1个答案

一尘不染

您要传递特定的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。)

然后,您将能够正常构造一个颜色图。特定的错误是
告诉您颜色是手动设置的,而不是通过颜色设置的
set_array(通过处理将数据值数组映射到RGB)。

2021-01-20