def make_tsmap_plots(self, maps, roi=None, **kwargs):
        """Make plots from the output of
        `~fermipy.gtanalysis.GTAnalysis.tsmap` or
        `~fermipy.gtanalysis.GTAnalysis.tscube`.  This method
        generates a 2D sky map for the best-fit test source in
        sqrt(TS) and Npred.

        Parameters
        ----------
        maps : dict
            Output dictionary of
            `~fermipy.gtanalysis.GTAnalysis.tsmap` or
            `~fermipy.gtanalysis.GTAnalysis.tscube`.

        roi : `~fermipy.roi_model.ROIModel`
            ROI Model object.  Generate markers at the positions of
            the sources in this ROI.

        zoom : float
            Crop the image by this factor.  If None then no crop is
            applied.
        """
        kwargs.setdefault('graticule_radii', self.config['graticule_radii'])
        kwargs.setdefault('label_ts_threshold',
                          self.config['label_ts_threshold'])
        kwargs.setdefault('cmap', self.config['cmap'])
        kwargs.setdefault('catalogs', self.config['catalogs'])
        fmt = kwargs.get('format', self.config['format'])
        figsize = kwargs.get('figsize', self.config['figsize'])
        workdir = kwargs.pop('workdir', self.config['fileio']['workdir'])
        suffix = kwargs.pop('suffix', 'tsmap')
        zoom = kwargs.pop('zoom', None)

        if 'ts' not in maps:
            return

        sigma_levels = [3, 5, 7] + list(np.logspace(1, 3, 17))
        prefix = maps['name']
        fig = plt.figure(figsize=figsize)
        p = ROIPlotter(maps['sqrt_ts'], roi=roi, **kwargs)
        p.plot(vmin=0, vmax=5, levels=sigma_levels,
               cb_label='Sqrt(TS) [$\sigma$]', interpolation='bicubic',
               zoom=zoom)
        plt.savefig(utils.format_filename(workdir,
                                          '%s_sqrt_ts' % suffix,
                                          prefix=[prefix],
                                          extension=fmt))
        plt.close(fig)

        fig = plt.figure(figsize=figsize)
        p = ROIPlotter(maps['npred'], roi=roi, **kwargs)
        p.plot(vmin=0, cb_label='NPred [Counts]', interpolation='bicubic',
               zoom=zoom)
        plt.savefig(utils.format_filename(workdir,
                                          '%s_npred' % suffix,
                                          prefix=[prefix],
                                          extension=fmt))
        plt.close(fig)

        # make and draw histogram
        fig, ax = plt.subplots(figsize=figsize)
        bins = np.linspace(0, 25, 101)

        data = np.nan_to_num(maps['ts'].data.T)
        data[data > 25.0] = 25.0
        data[data < 0.0] = 0.0
        n, bins, patches = ax.hist(data.flatten(), bins, density=True,
                                   histtype='stepfilled',
                                   facecolor='green', alpha=0.75)
        # ax.plot(bins,(1-chi2.cdf(x,dof))/2.,**kwargs)
        ax.plot(bins, 0.5 * chi2.pdf(bins, 1.0), color='k',
                label=r"$\chi^2_{1} / 2$")
        ax.set_yscale('log')
        ax.set_ylim(1E-4)
        ax.legend(loc='upper right', frameon=False)

        # labels and such
        ax.set_xlabel('TS')
        ax.set_ylabel('Probability')
        plt.savefig(utils.format_filename(workdir,
                                          '%s_ts_hist' % suffix,
                                          prefix=[prefix],
                                          extension=fmt))
        plt.close(fig)