附加在图上的颜色条
data = np.array(number_list)
self.fig = plt.Figure()
self.ax = self.fig.add_subplot(1,1,1)
N = data.max() + 5
self.ax.set_xlim(0,N)
self.ax.set_ylim(0,N)
self.ax.invert_yaxis()
self.ax.get_xaxis().set_visible(False)
self.ax.get_yaxis().set_visible(False)
self.ax.set_aspect('equal')
this = self.ax.scatter(data[:,1], data[:,0],color= 'black', marker = 's', s=3)
self.fig.colorbar(this, ticks=[-1, 0, 1],orientation='horizontal')
self.canvas = FigureCanvas(self, -1, self.fig)
self.toolbar = NavigationToolBar(self.canvas)
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.vbox.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
self.vbox.Add(self.toolbar,0,wx.EXPAND)
self.vbox.AddSpacer(25)
self.SetSizer(self.vbox)
self.vbox.Fit(self)
我尝试在图表上创建一个颜色条,但遇到了一个错误,错误信息是 TypeError: You must first set_array for mappable
。这个图表是一个矩阵图。请问我哪里出错了呢?
1 个回答
2
this = self.ax.scatter(data[:,1], data[:,0],color= 'black', marker = 's', s=3)
self.fig.colorbar(this, ticks=[-1, 0, 1],orientation='horizontal')
问题出在这些代码行上。你把所有的标记都设置成了固定的颜色,所以颜色条就没有意义了。如果你想使用 colorbar
,你需要通过将一个数值映射到颜色来设置标记的颜色,像这样:
this = self.ax.scatter(data[:,1], data[:,0],color=color_data, marker = 's', s=3)
self.fig.colorbar(this, ticks=[-1, 0, 1],orientation='horizontal')
这里 len(color_data) == len(data[:,0])
,并且是一个一维的数组对象。