code: def from_mult_iters(cls, name=None, idx=None, **kwargs):
          
          if not name:
              name = 'table'
  
          lengths = [len(v) for v in kwargs.values()]
  
          if len(set(lengths)) != 1:
              raise ValueError('Iterables must all be same length')
  
          if not idx:
              raise ValueError('Must provide iter name index reference')
  
          index = kwargs.pop(idx)
          vega_vals = []
          for k, v in sorted(kwargs.items()):
              for idx, val in zip(index, v):
                  value = {}
                  value['idx'] = idx
                  value['col'] = k
                  value['val'] = val
                  vega_vals.append(value)
  
          return cls(name, values=vega_vals)
docs: Load values from multiple iters
  
          Parameters
          ----------
          name : string, default None
              Name of the data set. If None (default), the name will be set to
              ``'table'``.
          idx: string, default None
              Iterable to use for the data index
          **kwargs : dict of iterables
              The ``values`` field will contain dictionaries with keys for
              each of the iterables provided. For example,
  
                  d = Data.from_iters(idx='x', x=[0, 1, 5], y=(10, 20, 30))
  
              would result in ``d`` having a ``values`` field with
  
                  [{'idx': 0, 'col': 'y', 'val': 10},
                   {'idx': 1, 'col': 'y', 'val': 20}
  
              If the iterables are not the same length, then ValueError is
              raised.