code: def plot_grouped_gos(self, fout_img=None, exclude_hdrs=None, **kws_usr):
          
          # 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)
docs: One Plot containing all user GOs (yellow or green) and header GO IDs(green or purple).