def plot_grouped_gos(self, fout_img=None, exclude_hdrs=None, **kws_usr):
        """One Plot containing all user GOs (yellow or green) and header GO IDs(green or purple)."""
        # kws_plt -> go2color go2bordercolor
        kws_plt, kws_dag = self._get_kws_plt(self.grprobj.usrgos, **kws_usr)
        pltgosusr = self.grprobj.usrgos
        if exclude_hdrs is not None:
            pltgosusr = pltgosusr.difference(self.grprobj.get_usrgos_g_hdrgos(exclude_hdrs))
        if fout_img is None:
            fout_img = "{GRP_NAME}.png".format(GRP_NAME=self.grprobj.grpname)
        # Split one plot into potentially three (BP, MF, CC) if png filename contains '{NS}'
        if '{NS}' in fout_img:
            go2nt = self.grprobj.gosubdag.get_go2nt(pltgosusr)
            for namespace in ['BP', 'MF', 'CC']:
                pltgos_ns = [go for go in pltgosusr if go2nt[go].NS == namespace]
                if pltgos_ns:
                    png = fout_img.format(NS=namespace)
                    self._plot_grouped_gos(png, pltgos_ns, kws_plt, kws_dag)
        # Plot all user GO IDs into a single plot, regardless of their namespace
        else:
            self._plot_grouped_gos(fout_img, pltgosusr, kws_plt, kws_dag)