code: def make_plot_waveform_plot(workflow, params, out_dir, ifos, exclude=None,
                              require=None, tags=None):
      
      tags = [] if tags is None else tags
      makedir(out_dir)
      name = 'single_template_plot'
      secs = requirestr(workflow.cp.get_subsections(name), require)
      secs = excludestr(secs, exclude)
      files = FileList([])
      for tag in secs:
          node = PlotExecutable(workflow.cp, 'plot_waveform', ifos=ifos,
                                out_dir=out_dir, tags=[tag] + tags).create_node()
          node.add_opt('--mass1', "%.6f" % params['mass1'])
          node.add_opt('--mass2', "%.6f" % params['mass2'])
          node.add_opt('--spin1z',"%.6f" % params['spin1z'])
          node.add_opt('--spin2z',"%.6f" % params['spin2z'])
          if 'u_vals' in params:
              # Precessing options
              node.add_opt('--spin1x',"%.6f" % params['spin1x'])
              node.add_opt('--spin2x',"%.6f" % params['spin2x'])
              node.add_opt('--spin1y',"%.6f" % params['spin1y'])
              node.add_opt('--spin2y',"%.6f" % params['spin2y'])
              node.add_opt('--inclination',"%.6f" % params['inclination'])
              node.add_opt('--u-val', "%.6f" % params['u_vals'])
          node.new_output_file_opt(workflow.analysis_time, '.png',
                                       '--output-file')
          workflow += node
          files += node.output_files
      return files
docs: Add plot_waveform jobs to the workflow.