docs: def _get_axis_data(self, bunch, dim, cluster_id=None, load_all=None):
          """Extract the points from the data on a given dimension.
  
          bunch is returned by the features() function.
          dim is the string specifying the dimensions to extract for the data.
  
          """
          if dim in self.attributes:
              return self.attributes[dim](cluster_id, load_all=load_all)
          masks = bunch.get('masks', None)
          assert dim not in self.attributes  # This is called only on PC data.
          s = 'ABCDEFGHIJ'
          # Channel relative index.
          c_rel = int(dim[:-1])
          # Get the channel_id from the currently-selected channels.
          channel_id = self.channel_ids[c_rel % len(self.channel_ids)]
          # Skup the plot if the channel id is not displayed.
          if channel_id not in bunch.channel_ids:  # pragma: no cover
              return None
          # Get the column index of the current channel in data.
          c = list(bunch.channel_ids).index(channel_id)
          # Principal component: A=0, B=1, etc.
          d = s.index(dim[-1])
          if masks is not None:
              masks = masks[:, c]
          return Bunch(data=bunch.data[:, c, d],
                       masks=masks,
                       )