{
  "version": "xarts.coordinate-marks/1",
  "family": "coordinate-marks",
  "provenance": {
    "legacyId": "convex-hull"
  },
  "document": {
    "textOverflow": "preserve",
    "header": {
      "title": "Dos de los tres segmentos son el mismo cliente",
      "subtitle": "45 clientes de la cadena · gasto medio por visita frente a visitas al mes, con la envolvente de cada segmento"
    },
    "footer": {
      "source": "Datos de demostración de la receta convex-hull. Las envolventes y la cifra de solape las calcula la propia figura sobre estas 45 filas: cadena monótona de Andrew para el casco, recorte de Sutherland-Hodgman para el área común.",
      "notes": "El solape se da como fracción del área del primer casco, no de la unión: un cociente de áreas del mismo plano no cambia si mañana el gasto viene en céntimos.",
      "alt": "Nube de 45 clientes en un plano de gasto medio por visita (eje X, 13 a 64 euros) y visitas al mes (eje Y, 3 a 13). Cada uno de los tres segmentos lleva dibujado el polígono mínimo que encierra sus puntos. Los cascos de «Familias con hijos» y «Sénior de barrio» se montan uno sobre otro; el de «Jóvenes urbanos» queda aparte, abajo a la izquierda del gasto y arriba en frecuencia."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 16,
      "minimumTextGap": 4
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 940,
      "height": 680
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "convex-hull",
    "embedSpec": true,
    "geometryDecimals": 2
  },
  "operation": "group-convex-envelopes",
  "data": {
    "rows": [
      {
        "id": "observation-1",
        "label": "Observación 1",
        "group": "g1",
        "x": 63,
        "y": 4.8
      },
      {
        "id": "observation-2",
        "label": "Observación 2",
        "group": "g1",
        "x": 54.7,
        "y": 5.4
      },
      {
        "id": "observation-3",
        "label": "Observación 3",
        "group": "g1",
        "x": 47,
        "y": 4.5
      },
      {
        "id": "observation-4",
        "label": "Observación 4",
        "group": "g1",
        "x": 58.2,
        "y": 6.1
      },
      {
        "id": "observation-5",
        "label": "Observación 5",
        "group": "g1",
        "x": 49.6,
        "y": 4.4
      },
      {
        "id": "observation-6",
        "label": "Observación 6",
        "group": "g1",
        "x": 52.5,
        "y": 3.3
      },
      {
        "id": "observation-7",
        "label": "Observación 7",
        "group": "g1",
        "x": 63.9,
        "y": 4.3
      },
      {
        "id": "observation-8",
        "label": "Observación 8",
        "group": "g1",
        "x": 46.8,
        "y": 6.1
      },
      {
        "id": "observation-9",
        "label": "Observación 9",
        "group": "g1",
        "x": 56.1,
        "y": 3.7
      },
      {
        "id": "observation-10",
        "label": "Observación 10",
        "group": "g1",
        "x": 54.8,
        "y": 5
      },
      {
        "id": "observation-11",
        "label": "Observación 11",
        "group": "g1",
        "x": 63,
        "y": 6.2
      },
      {
        "id": "observation-12",
        "label": "Observación 12",
        "group": "g1",
        "x": 55.6,
        "y": 3.2
      },
      {
        "id": "observation-13",
        "label": "Observación 13",
        "group": "g1",
        "x": 55.2,
        "y": 6.4
      },
      {
        "id": "observation-14",
        "label": "Observación 14",
        "group": "g1",
        "x": 50.3,
        "y": 4.5
      },
      {
        "id": "observation-15",
        "label": "Observación 15",
        "group": "g1",
        "x": 54.9,
        "y": 5.5
      },
      {
        "id": "observation-16",
        "label": "Observación 16",
        "group": "g1",
        "x": 48.8,
        "y": 5.5
      },
      {
        "id": "observation-17",
        "label": "Observación 17",
        "group": "g2",
        "x": 62.2,
        "y": 5.3
      },
      {
        "id": "observation-18",
        "label": "Observación 18",
        "group": "g2",
        "x": 51.5,
        "y": 3.2
      },
      {
        "id": "observation-19",
        "label": "Observación 19",
        "group": "g2",
        "x": 43.7,
        "y": 3.9
      },
      {
        "id": "observation-20",
        "label": "Observación 20",
        "group": "g2",
        "x": 57.7,
        "y": 6.3
      },
      {
        "id": "observation-21",
        "label": "Observación 21",
        "group": "g2",
        "x": 46.8,
        "y": 3.7
      },
      {
        "id": "observation-22",
        "label": "Observación 22",
        "group": "g2",
        "x": 51.8,
        "y": 4.3
      },
      {
        "id": "observation-23",
        "label": "Observación 23",
        "group": "g2",
        "x": 40.1,
        "y": 6.8
      },
      {
        "id": "observation-24",
        "label": "Observación 24",
        "group": "g2",
        "x": 49.7,
        "y": 6.7
      },
      {
        "id": "observation-25",
        "label": "Observación 25",
        "group": "g2",
        "x": 56,
        "y": 4.4
      },
      {
        "id": "observation-26",
        "label": "Observación 26",
        "group": "g2",
        "x": 50,
        "y": 5.3
      },
      {
        "id": "observation-27",
        "label": "Observación 27",
        "group": "g2",
        "x": 45.1,
        "y": 4.8
      },
      {
        "id": "observation-28",
        "label": "Observación 28",
        "group": "g2",
        "x": 59.8,
        "y": 4.7
      },
      {
        "id": "observation-29",
        "label": "Observación 29",
        "group": "g2",
        "x": 56.7,
        "y": 6.5
      },
      {
        "id": "observation-30",
        "label": "Observación 30",
        "group": "g2",
        "x": 44.5,
        "y": 4.5
      },
      {
        "id": "observation-31",
        "label": "Observación 31",
        "group": "g2",
        "x": 49.6,
        "y": 3.6
      },
      {
        "id": "observation-32",
        "label": "Observación 32",
        "group": "g3",
        "x": 30.3,
        "y": 8.6
      },
      {
        "id": "observation-33",
        "label": "Observación 33",
        "group": "g3",
        "x": 19.7,
        "y": 9.5
      },
      {
        "id": "observation-34",
        "label": "Observación 34",
        "group": "g3",
        "x": 26.2,
        "y": 9.1
      },
      {
        "id": "observation-35",
        "label": "Observación 35",
        "group": "g3",
        "x": 19,
        "y": 12
      },
      {
        "id": "observation-36",
        "label": "Observación 36",
        "group": "g3",
        "x": 26.7,
        "y": 7.3
      },
      {
        "id": "observation-37",
        "label": "Observación 37",
        "group": "g3",
        "x": 29.1,
        "y": 11.9
      },
      {
        "id": "observation-38",
        "label": "Observación 38",
        "group": "g3",
        "x": 23.9,
        "y": 11.7
      },
      {
        "id": "observation-39",
        "label": "Observación 39",
        "group": "g3",
        "x": 25.5,
        "y": 13.4
      },
      {
        "id": "observation-40",
        "label": "Observación 40",
        "group": "g3",
        "x": 22.3,
        "y": 12.2
      },
      {
        "id": "observation-41",
        "label": "Observación 41",
        "group": "g3",
        "x": 13.4,
        "y": 10.5
      },
      {
        "id": "observation-42",
        "label": "Observación 42",
        "group": "g3",
        "x": 30.1,
        "y": 11.2
      },
      {
        "id": "observation-43",
        "label": "Observación 43",
        "group": "g3",
        "x": 15.5,
        "y": 10.7
      },
      {
        "id": "observation-44",
        "label": "Observación 44",
        "group": "g3",
        "x": 15.4,
        "y": 11.9
      },
      {
        "id": "observation-45",
        "label": "Observación 45",
        "group": "g3",
        "x": 28.1,
        "y": 7.6
      }
    ]
  },
  "encoding": {
    "groups": [
      {
        "id": "g1",
        "label": "Familias con hijos",
        "color": "#014d64"
      },
      {
        "id": "g2",
        "label": "Sénior de barrio",
        "color": "#3a9a6e"
      },
      {
        "id": "g3",
        "label": "Jóvenes urbanos",
        "color": "#7c5bbf"
      }
    ],
    "x": {
      "label": "Gasto medio por visita (€)",
      "unit": "EUR/visita"
    },
    "y": {
      "label": "Visitas al mes",
      "unit": "visitas/mes"
    }
  },
  "calculation": {
    "xDomain": {
      "source": "extent",
      "paddingMode": "fraction",
      "minimumSpan": 1,
      "padding": [
        0.08,
        0.08
      ],
      "includeZero": false
    },
    "yDomain": {
      "source": "extent",
      "paddingMode": "fraction",
      "minimumSpan": 1,
      "padding": [
        0.1,
        0.35
      ],
      "includeZero": false
    },
    "niceX": true,
    "niceY": true,
    "hull": "andrew-monotone-chain",
    "duplicateCoordinates": "retain-observations-deduplicate-vertices",
    "degenerate": "outline-only",
    "overlap": {
      "denominator": "source-hull-area",
      "pair": {
        "selection": "maximum-directed-overlap"
      }
    },
    "paintOrder": "descending-hull-area"
  },
  "layout": {
    "measurement": {
      "numbers": "tabular-nums",
      "inkPadding": 4,
      "tickSize": 13,
      "titleSize": 13
    },
    "margin": {
      "top": 30,
      "right": 30,
      "bottom": 80,
      "left": 80
    },
    "ticksX": 6,
    "ticksY": 6,
    "maximumBottom": 88,
    "edgeClearance": 14,
    "exportMeasurement": "shaped",
    "textOverflow": "reject"
  },
  "axes": {
    "ticks": {
      "size": 13,
      "family": "'Inter', system-ui, -apple-system, sans-serif",
      "color": "#3d3d3d"
    },
    "titles": {
      "size": 13,
      "family": "'Inter', system-ui, -apple-system, sans-serif",
      "weight": 700,
      "color": "#2a2a2a"
    },
    "lineColor": "#3d3d3d",
    "lineWidth": 1.5,
    "tickLength": 0,
    "gridColor": "#d6cfbc",
    "gridOpacity": 1
  },
  "marks": {
    "radius": 4,
    "opacity": 0.85,
    "stroke": "surface",
    "strokeWidth": 1,
    "hullFillOpacity": 0.14,
    "hullStrokeWidth": 1.5,
    "hullStrokeOpacity": 1,
    "degenerateDash": "4 3"
  },
  "labels": {
    "font": {
      "size": 14,
      "family": "'Inter', system-ui, -apple-system, sans-serif",
      "weight": 600,
      "color": "textPrimary"
    },
    "chipSize": 10,
    "chipGap": 6,
    "separation": 12,
    "maximumWidth": 320
  },
  "summary": {
    "visible": true,
    "font": {
      "size": 14,
      "family": "'Inter', system-ui, -apple-system, sans-serif",
      "weight": 400,
      "color": "textPrimary"
    },
    "headlineFont": {
      "size": 16,
      "family": "'Inter', system-ui, -apple-system, sans-serif",
      "weight": 600,
      "color": "textPrimary"
    },
    "secondaryColor": "textSecondary",
    "fill": "surface",
    "fillOpacity": 0.88,
    "stroke": "borderLight",
    "paddingX": 12,
    "paddingY": 12,
    "lineGap": 5,
    "radius": 2,
    "maximumWidth": 500
  },
  "annotations": []
}
