{
  "version": "xarts.coordinate-marks/1",
  "family": "coordinate-marks",
  "operation": "linear-score",
  "provenance": {
    "legacyId": "ruleof40"
  },
  "data": {
    "rows": [
      {
        "id": "1",
        "label": "Acme SaaS",
        "x": 45,
        "y": 12,
        "size": null,
        "group": "own",
        "providedScore": 57,
        "providedPass": true
      },
      {
        "id": "2",
        "label": "CloudCo",
        "x": 65,
        "y": -5,
        "size": null,
        "group": "observations",
        "providedScore": 60,
        "providedPass": true
      },
      {
        "id": "3",
        "label": "DataFlow",
        "x": 30,
        "y": 18,
        "size": null,
        "group": "observations",
        "providedScore": 48,
        "providedPass": true
      },
      {
        "id": "4",
        "label": "SecureNet",
        "x": 22,
        "y": 25,
        "size": null,
        "group": "observations",
        "providedScore": 47,
        "providedPass": true
      },
      {
        "id": "5",
        "label": "DevTools",
        "x": 80,
        "y": -15,
        "size": null,
        "group": "observations",
        "providedScore": 65,
        "providedPass": true
      },
      {
        "id": "6",
        "label": "FinStack",
        "x": 15,
        "y": 30,
        "size": null,
        "group": "observations",
        "providedScore": 45,
        "providedPass": true
      },
      {
        "id": "7",
        "label": "MLPlatform",
        "x": 55,
        "y": -8,
        "size": null,
        "group": "observations",
        "providedScore": 47,
        "providedPass": true
      },
      {
        "id": "8",
        "label": "APIHub",
        "x": 35,
        "y": 20,
        "size": null,
        "group": "observations",
        "providedScore": 55,
        "providedPass": true
      },
      {
        "id": "9",
        "label": "LogScale",
        "x": 25,
        "y": 10,
        "size": null,
        "group": "observations",
        "providedScore": 35,
        "providedPass": false
      },
      {
        "id": "10",
        "label": "PayFlow",
        "x": 18,
        "y": 35,
        "size": null,
        "group": "observations",
        "providedScore": 53,
        "providedPass": true
      },
      {
        "id": "11",
        "label": "ChatOps",
        "x": 70,
        "y": -20,
        "size": null,
        "group": "observations",
        "providedScore": 50,
        "providedPass": true
      },
      {
        "id": "12",
        "label": "HRCloud",
        "x": 12,
        "y": 22,
        "size": null,
        "group": "observations",
        "providedScore": 34,
        "providedPass": false
      }
    ]
  },
  "encoding": {
    "id": "id",
    "label": "label",
    "x": "x",
    "y": "y",
    "size": "size",
    "group": "group",
    "units": {
      "x": {
        "label": "Revenue growth",
        "unit": "percentage-points"
      },
      "y": {
        "label": "Profit margin",
        "unit": "percentage-points"
      },
      "size": null
    },
    "groups": [
      {
        "id": "observations",
        "label": "Peers",
        "fill": "cyan",
        "stroke": "surface",
        "strokeWidth": 1.5,
        "labelWeight": 500
      },
      {
        "id": "own",
        "label": "Own company",
        "fill": "blue",
        "stroke": "surface",
        "strokeWidth": 2.5,
        "labelWeight": 600
      }
    ]
  },
  "calculation": {
    "xDomain": {
      "source": "extent-union",
      "bounds": [
        -30,
        100
      ]
    },
    "yDomain": {
      "source": "extent-union",
      "bounds": [
        -30,
        50
      ]
    },
    "niceX": true,
    "niceY": true,
    "size": {
      "mapping": "constant",
      "radius": 6
    },
    "quadrants": null,
    "score": {
      "weights": [
        1,
        1
      ],
      "threshold": 40,
      "unit": "percentage-points",
      "comparison": "gte",
      "suppliedTolerance": 0
    }
  },
  "profile": {
    "placement": {
      "mode": "measured",
      "maxWidth": 180,
      "maxLines": 4,
      "lineHeight": 1.35,
      "gap": 10,
      "edge": 10,
      "gridStep": 14,
      "guideWidth": 0.75,
      "guideColor": "textMuted"
    },
    "margin": {
      "top": 40,
      "right": 56,
      "bottom": 96,
      "left": 96
    },
    "measureY": false,
    "axis": {
      "smart": true,
      "axisLines": false,
      "tickMarks": false,
      "baseline": true,
      "grid": true,
      "columns": true,
      "ticksX": 6,
      "ticksY": 5,
      "format": "number",
      "titleX": ""
    },
    "marks": {
      "fillOpacity": 0.85,
      "strokeOpacity": 1
    },
    "labels": {
      "fill": "textSecondary",
      "fontSize": 12,
      "fontWeight": 500,
      "position": "above-radius",
      "dx": 0,
      "dy": -6,
      "visible": true
    },
    "quadrants": {
      "visible": false,
      "labels": {
        "fill": "textMuted",
        "fontSize": 13,
        "fontWeight": 700
      },
      "opacity": 1,
      "opacityStyle": true,
      "backgroundOpacity": 0,
      "placement": "fractions",
      "fractions": [
        [
          0.82,
          0.18
        ],
        [
          0.82,
          0.82
        ],
        [
          0.18,
          0.82
        ],
        [
          0.18,
          0.18
        ]
      ],
      "dominantMiddle": false
    },
    "crosshair": {
      "visible": false,
      "stroke": "textMuted",
      "width": 1,
      "dash": "4 3",
      "opacity": 0.3,
      "opacityStyle": true
    },
    "endpoints": {
      "labels": {
        "fill": "textSecondary",
        "fontSize": 12,
        "fontWeight": 600
      },
      "padding": 6,
      "xLow": "Economy",
      "xHigh": "Premium",
      "yLow": "Traditional",
      "yHigh": "Innovative",
      "visible": false
    },
    "score": {
      "label": "Rule of 40",
      "lineColor": "textMuted",
      "lineWidth": 1.5,
      "lineDash": "6,4",
      "passColor": "emerald",
      "failColor": "red",
      "regionOpacity": 0.06,
      "zeroColor": "border",
      "zeroWidth": 1,
      "labelColor": "textMuted",
      "labelFontSize": 11,
      "labelWeight": 600,
      "labelDx": -10,
      "labelDy": -8,
      "radiiByGroup": {
        "observations": 6,
        "own": 8
      },
      "guideWidth": 0.5,
      "guideOpacity": 0.5
    }
  },
  "annotations": [],
  "document": {
    "header": {
      "title": "Rule of 40",
      "subtitle": "Revenue growth rate plus profit margin benchmark"
    },
    "footer": {
      "source": "xarts · demo data",
      "notes": "Illustrative data to explore the chart and replace with your own."
    },
    "spacing": {
      "horizontalPadding": 32,
      "topPadding": 24,
      "bottomPadding": 24,
      "minimumTextGap": 6
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 1200,
      "height": 760
    },
    "locale": "en-US",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "ruleof40",
    "embedSpec": true,
    "geometryDecimals": 2
  }
}
