def make_canvas_frame(self):
        """ Create the data and thematic map images for the first time """

        self.fig, (self.imageax, self.previewax) = plt.subplots(ncols=2,
                                                                figsize=self.canvas_size,
                                                                sharex=True, sharey=True,
                                                                gridspec_kw=self.subplot_grid_spec)
        self.canvas = FigureCanvasTkAgg(self.fig, master=self.canvas_frame)
        self.canvas.mpl_connect('button_press_event', self.onclick)
        self.canvas.mpl_connect('key_press_event', self.onpress)

        # set up the channel data view
        self.configure_threecolor_image()
        self.imageplot = self.imageax.imshow(self.image)
        self.imageax.set_xlim([0, self.shape[0]])
        self.imageax.set_ylim([0, self.shape[0]])
        self.imageax.set_axis_off()
        self.history.append(self.selection_array)
        cmap = self.config.solar_cmap
        self.mask = self.previewax.imshow(self.selection_array,
                                          origin='lower',
                                          interpolation='nearest',
                                          cmap=cmap,
                                          vmin=-1, vmax=max([num for _, num in self.config.solar_classes])+1)
        self.previewax.set_xlim([0, self.shape[0]])
        self.previewax.set_ylim([0, self.shape[0]])
        self.previewax.set_aspect("equal")
        self.previewax.set_axis_off()

        # add selection layer for lasso
        self.pix = np.arange(self.shape[0])  # assumes square image
        xv, yv = np.meshgrid(self.pix, self.pix)
        self.pix = np.vstack((xv.flatten(), yv.flatten())).T

        lineprops = dict(color=self.config.default['lasso_color'],
                         linewidth=self.config.default['lasso_width'])
        self.lasso = LassoSelector(self.imageax, self.onlasso, lineprops=lineprops)

        # display everything
        self.canvas.show()
        self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
        self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=True)

        # add the tool bar
        self.toolbarcenterframe = tk.LabelFrame(self.canvas_frame,
                                                borderwidth=0,
                                                text="Draw: unlabeled",
                                                relief=tk.FLAT,
                                                labelanchor=tk.N,
                                                background='red')
        toolbarframe = tk.Frame(self.toolbarcenterframe)
        toolbar = CustomToolbar(self.canvas, toolbarframe, self.toolbarcenterframe, self)
        toolbar.update()
        self.fig.canvas.toolbar.set_message = lambda x: ""  # remove state reporting
        toolbarframe.pack()
        self.toolbarcenterframe.pack(side=tk.BOTTOM, fill=tk.X)