code: def _get_colordata(bs, elements, bs_projection):
          
          contribs = {}
          if bs_projection and bs_projection.lower() == "elements":
              projections = bs.get_projection_on_elements()
  
          for spin in (Spin.up, Spin.down):
              if spin in bs.bands:
                  contribs[spin] = []
                  for band_idx in range(bs.nb_bands):
                      colors = []
                      for k_idx in range(len(bs.kpoints)):
                          if bs_projection and bs_projection.lower() == "elements":
                              c = [0, 0, 0]
                              projs = projections[spin][band_idx][k_idx]
                              # note: squared color interpolations are smoother
                              # see: https://youtu.be/LKnqECcg6Gw
                              projs = dict(
                                  [(k, v ** 2) for k, v in projs.items()])
                              total = sum(projs.values())
                              if total > 0:
                                  for idx, e in enumerate(elements):
                                      c[idx] = math.sqrt(projs[
                                                             e] / total)  # min is to handle round errors
  
                              c = [c[1], c[2],
                                   c[0]]  # prefer blue, then red, then green
  
                          else:
                              c = [0, 0, 0] if spin == Spin.up \
                                  else [0, 0,
                                        1]  # black for spin up, blue for spin down
  
                          colors.append(c)
  
                      contribs[spin].append(colors)
                  contribs[spin] = np.array(contribs[spin])
  
          return contribs
docs: Get color data, including projected band structures
          Args:
              bs: Bandstructure object
              elements: elements (in desired order) for setting to blue, red, green
              bs_projection: None for no projection, "elements" for element projection
  
          Returns: