code: def layoutrow(sizes, x, y, dx, dy):
      """
      Generate rectangle dimensions for each size in sizes when remaining width
      exceeds remaining height (dx >= dy). Rectangles will fill up height dy,
      and width will be determined by their area. Sizes should be pre-normalized
      with respect to dx * dy (i.e., they should be same units)
  
      :param sizes: Ordered (desc) ist of values normalized with respect to
          overall height (dy) and width values (dx)
      :param x: Rectangle start point on treemap x-axis
      :param y: Rectangle start point on treemap y-axis
      :param dx: Remaining treemap width
      :param dy: Remaining treemap height
      :return: List of dictionaries of rectangle dimensions
      """
      covered_area = sum(sizes)
      width = covered_area / dy
      rects = []
      heights = 0
      for size in sizes:
          rects.append(
              {
                  "x": x,
                  "y": dy - (size / width),
                  "dx": width,
                  "dy": size / width,
              }
          )
          dy -= size / width
      return rects
  
file_path: aequitas/src/aequitas/squarify_flipped.py
imports: import matplotlib.pyplot
  import itertools
label_desc: Use image node_id 2 for calling a global function with example usage: layoutrow(sizes, x, y, dx, dy) and returns: rects