Scatterplot Matrix

Mixed fields expand into SPLOM panels with off-diagonal jittered scatter and diagonal distributions.

Scatterplot Matrix
Scatterplot Matrix Pipeline pipeline

Data Sources

4

Fields

37

Scales

1

Layers

7

Glyphs

109

rect 28 / point 72 / text 9

matrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsmatrix-panelsreach: 2 valuesreach: 3 valuesreach: 2 valuesreach: 0 valuesreach: 2 valuesreach: 2 valuesreach: 1 valuesconversion: 2 valuesconversion: 1 valuesconversion: 3 valuesconversion: 2 valuesconversion: 1 valuesconversion: 2 valuesconversion: 1 valuespromoted true: 6 valuespromoted false: 6 valuesAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen ExperimentalAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen ExperimentalAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen ExperimentalAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen ExperimentalAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen ExperimentalAtlas CoreBeacon CoreCinder CoreDelta GrowthEmber GrowthFjord GrowthGrove ScaleHarbor ScaleIon ScaleJuno ScaleKepler ExperimentalLumen Experimentalreachreachconversionconversionpromotedpromotedreachreachconversionconversionpromotedpromotedreachreachconversionconversionpromotedpromoted

Build Path

Scatterplot Matrix Pipeline

This example is rebuilt from gallery data source observations by recipe scatterplotMatrix: raw table rows -> TabularSource -> pipeline drafts -> analyzeAuthoringDrafts() -> materialized ChartSpec -> compileChart() -> SceneGraph -> SVG. The graph below shows the authored pipeline stage.

Pipeline recipe graph

10 pipelines
11 nodes
8 edges

Data Flow Diagram

0/1037 nodes
0/1942 edges
1037 hidden

Select a glyph to highlight its complete source path.

Scope

Roles

source
transform
field
scale
layer
param
glyph

No matching flow nodes

Adjust search, scope, or role filters.

Available Data

4 tables
3 transforms

Imported table

source_gallery_scatterplotmatrix
raw
10 columns
feeds pipeline_matrix_panel_layout_transform
feeds pipeline_matrix_point_layout_transform
feeds pipeline_matrix_distribution_layout_transform

ChartSpec

{
  "id": "gallery.scatterplotMatrix",
  "data": [
    {
      "id": "source_gallery_scatterplotmatrix",
      "rows": 12
    },
    {
      "id": "source_matrix_panels",
      "rows": 9
    },
    {
      "id": "source_matrix_points",
      "rows": 72
    },
    {
      "id": "source_matrix_distributions",
      "rows": 16
    }
  ],
  "transforms": [
    {
      "id": "pipeline_matrix_panel_layout_transform",
      "type": "layout",
      "input": "source_gallery_scatterplotmatrix",
      "output": "source_matrix_panels",
      "options": {
        "columnGap": 9,
        "endField": "segment",
        "errorMethod": "standardError",
        "field": "reach",
        "fit": "contain",
        "geometryField": "reach",
        "groupBy": [
          "reach"
        ],
        "idField": "reach",
        "includeMax": false,
        "labelField": "reach",
        "layout": "pipeline_plot_layout",
        "layoutKind": "scatterplotMatrixPanels",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "reach",
        "parentField": "conversion",
        "seriesBy": "conversion",
        "sourceField": "reach",
        "startField": "conversion",
        "targetField": "conversion",
        "value": "promoted",
        "xField": "conversion",
        "yField": "segment"
      }
    },
    {
      "id": "pipeline_matrix_point_layout_transform",
      "type": "layout",
      "input": "source_gallery_scatterplotmatrix",
      "output": "source_matrix_points",
      "options": {
        "columnGap": 9,
        "endField": "segment",
        "errorMethod": "standardError",
        "field": "reach",
        "fit": "contain",
        "geometryField": "reach",
        "groupBy": [
          "reach"
        ],
        "idField": "reach",
        "includeMax": false,
        "innerPadding": 14,
        "jitter": 12,
        "labelField": "reach",
        "layout": "pipeline_plot_layout",
        "layoutKind": "scatterplotMatrixPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "reach",
        "parentField": "conversion",
        "seriesBy": "conversion",
        "sourceField": "reach",
        "startField": "conversion",
        "targetField": "conversion",
        "value": "promoted",
        "xField": "conversion",
        "yField": "segment"
      }
    },
    {
      "id": "pipeline_matrix_distribution_layout_transform",
      "type": "layout",
      "input": "source_gallery_scatterplotmatrix",
      "output": "source_matrix_distributions",
      "options": {
        "columnGap": 9,
        "count": 7,
        "endField": "segment",
        "errorMethod": "standardError",
        "field": "reach",
        "fit": "contain",
        "geometryField": "reach",
        "groupBy": [
          "reach"
        ],
        "idField": "reach",
        "includeMax": false,
        "innerPadding": 14,
        "labelField": "reach",
        "layout": "pipeline_plot_layout",
        "layoutKind": "scatterplotMatrixDistributions",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "reach",
        "parentField": "conversion",
        "seriesBy": "conversion",
        "sourceField": "reach",
        "startField": "conversion",
        "targetField": "conversion",
        "value": "promoted",
        "xField": "conversion",
        "yField": "segment"
      }
    }
  ],
  "axes": [],
  "grids": [],
  "legends": [],
  "fields": [
    "__rowLabel",
    "label",
    "segment",
    "quality",
    "promoted",
    "reach",
    "conversion",
    "tooltip",
    "id",
    "cellRole",
    "columnIndex",
    "diagonal",
    "height",
    "labelX",
    "labelY",
    "rowIndex",
    "width",
    "x",
    "xField",
    "xLabel",
    "xType",
    "y",
    "yField",
    "yLabel",
    "yType",
    "cellId",
    "xValue",
    "yValue",
    "count",
    "distributionKind",
    "field",
    "fieldLabel",
    "fieldType",
    "max",
    "min",
    "value",
    "valueLabel"
  ],
  "scales": [
    {
      "id": "pipeline_color_color_scale",
      "type": "ordinal",
      "domain": {
        "source": "field",
        "data": "source_matrix_points",
        "field": "segment",
        "fields": [],
        "includeZero": false,
        "order": "input",
        "reverse": false,
        "symmetric": false
      }
    }
  ],
  "layers": [
    {
      "id": "create_chart_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_view_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_plot_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_matrix_panels_layer",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_diagonal_distributions_layer",
      "mark": "rect",
      "role": "data"
    },
    {
      "id": "pipeline_off_diagonal_points_layer",
      "mark": "point",
      "role": "data"
    },
    {
      "id": "pipeline_panel_labels_layer",
      "mark": "text",
      "role": "guide"
    }
  ]
}

Resolved SceneGraph

{
  "scene": "gallery.scatterplotMatrix.scene",
  "scales": [
    {
      "id": "pipeline_color_color_scale",
      "type": "ordinal",
      "domain": [
        "Core",
        "Growth",
        "Scale",
        "Experimental"
      ],
      "range": [
        "var(--colors-blue-9)",
        "var(--colors-green-9)",
        "var(--colors-amber-9)",
        "var(--colors-purple-9)",
        "var(--colors-red-9)"
      ]
    }
  ],
  "layers": [
    {
      "id": "create_chart_surface",
      "role": "context",
      "zIndex": -10,
      "glyphs": 1
    },
    {
      "id": "pipeline_view_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_plot_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_matrix_panels_layer",
      "role": "context",
      "zIndex": 0,
      "glyphs": 9
    },
    {
      "id": "pipeline_diagonal_distributions_layer",
      "role": "data",
      "zIndex": 5,
      "glyphs": 16
    },
    {
      "id": "pipeline_off_diagonal_points_layer",
      "role": "data",
      "zIndex": 15,
      "glyphs": 72
    },
    {
      "id": "pipeline_panel_labels_layer",
      "role": "guide",
      "zIndex": 25,
      "glyphs": 9
    }
  ]
}

Glyph Data Tree

7 layers

Full parameter lineage for the active compiler surface.

create_chart_surface

1

pipeline_view_layout_surface

1

pipeline_plot_layout_surface

1

pipeline_matrix_panels_layer

9

pipeline_diagonal_distributions_layer

16

pipeline_off_diagonal_points_layer

72

pipeline_panel_labels_layer

9

Glyph Inspector

none

Select a glyph in the chart to inspect resolved params and lineage.