code: def _makedos(self, ax, dos_plotter, dos_options, dos_label=None):
          
  
          # don't use first 4 colours; these are the band structure line colours
          cycle = cycler(
              'color', rcParams['axes.prop_cycle'].by_key()['color'][4:])
          with context({'axes.prop_cycle': cycle}):
              plot_data = dos_plotter.dos_plot_data(**dos_options)
  
          mask = plot_data['mask']
          energies = plot_data['energies'][mask]
          lines = plot_data['lines']
          spins = [Spin.up] if len(lines[0][0]['dens']) == 1 else \
              [Spin.up, Spin.down]
  
          for line_set in plot_data['lines']:
              for line, spin in it.product(line_set, spins):
                  if spin == Spin.up:
                      label = line['label']
                      densities = line['dens'][spin][mask]
                  else:
                      label = ""
                      densities = -line['dens'][spin][mask]
                  ax.fill_betweenx(energies, densities, 0, lw=0,
                                   facecolor=line['colour'],
                                   alpha=line['alpha'])
                  ax.plot(densities, energies, label=label,
                          color=line['colour'])
  
              # x and y axis reversed versus normal dos plotting
              ax.set_ylim(dos_options['xmin'], dos_options['xmax'])
              ax.set_xlim(plot_data['ymin'], plot_data['ymax'])
  
              if dos_label is not None:
                  ax.set_xlabel(dos_label)
  
          ax.set_xticklabels([])
          ax.legend(loc=2, frameon=False, ncol=1, bbox_to_anchor=(1., 1.))
docs: This is basically the same as the SDOSPlotter get_plot function.