我想在散点图中显示一个颜色条,但是一直收到以下错误:
TypeError:您必须首先为可映射对象设置数组
这是我用来绘制的代码:
# 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)
这一行,我可以正确绘制图形,但是我想同时绘制色条。
提前感谢您的帮助。
color
是facecolors
的别名。(这有点令人困惑,但这是由于继承了matlab的绘图api。)c
是原始matlab的scatter的遗留问题。scatter
旨在被调用为scatter(x, y, c=z1, s=z1)
以同时显示4个变量。(两个位置,按颜色变化和按大小变化)。在幕后,color
调用输出集合上的set_facecolors
,而c
调用set_array
。从长远来看,如果传入标量数组,则使color
的行为与c
相同可能是一个好主意。 - Joe Kingtoncmin = 0,cmax = 1
。 - Joe Kington