FD EV Price/Range (faceted)

Faceted compiler version of the FlowingData/NYT EV price-vs-range comparison.

FD EV Price/Range (faceted)
FD EV Price/Range (faceted) Pipeline pipeline

Data Sources

16

Fields

55

Scales

0

Layers

15

Glyphs

236

rect 6 / line 14 / text 20 / path 2 / point 194

100 mi.200 mi.300 mi.400 mi.100 mi.200 mi.300 mi.400 mi.100 mi.100 mi.200 mi.200 mi.300 mi.300 mi.400 mi.400 mi.100 mi.100 mi.200 mi.200 mi.300 mi.300 mi.400 mi.400 mi.$30k$50k$70k$30k$50k$70k$30k$30k$50k$50k$70k$70k$30k$30k$50k$50k$70k$70kTrend: y = 4.66x + -77.95Trend: y = 1.51x + 201.44ev-1 Nissanev-2 Chevroletev-4 Chevroletev-5 Chevroletev-6 Subaruev-7 Teslaev-8 Teslaev-9 Teslaev-10 Teslaev-11 Hyundaiev-13 Toyotaev-14 Teslaev-15 Hyundaiev-16 Teslaev-17 Teslaev-18 Hyundaiev-19 Hondaev-20 Toyotaev-22 Subaruev-24 Volvoev-25 Teslaev-27 Nissanev-28 Subaruev-29 Hyundaiev-30 Chevroletev-31 Hyundaiev-32 Hyundaiev-33 Chevroletev-34 Kiaev-37 Hyundaiev-38 Toyotaev-39 Volvoev-40 Fordev-42 Teslaev-43 Fordev-44 Toyotaev-45 Lexusev-47 Hondaev-48 Nissanev-49 Volkswagenev-51 Hyundaiev-52 Volkswagenev-53 Kiaev-54 Kiaev-58 Fiskerev-59 Polestar 2ev-60 Volkswagenev-61 Hyundaiev-62 Toyotaev-63 Cadillacev-64 Hyundaiev-65 Kiaev-66 Lexusev-71 Hondaev-72 Lucidev-73 Lucidev-77 Fordev-78 Chevroletev-79 Hyundaiev-80 Genesisev-84 Lucidev-85 Hyundaiev-86 Subaruev-87 Nissanev-88 BMWev-91 Nissanev-92 Chevroletev-93 Audiev-94 Cadillacev-95 Audiev-96 Hyundaiev-100 Toyotaev-101 Audiev-102 Hyundaiev-103 Volvoev-104 Genesisev-105 Polestarev-106 Teslaev-107 Hyundaiev-111 Chevroletev-112 Genesisev-113 Fiskerev-114 BMWev-115 Cadillacev-116 Cadillacev-122 Volvoev-123 Volvoev-124 Kiaev-125 Volvoev-126 Teslaev-128 Cadillacev-129 Nissanev-130 Fordev-131 Kiaev-134 Audiev-135 Nissanev-136 Chevroletev-137 Chevroletev-146 Nissanev-147 Hyundaiev-148 BMWev-149 Nissanev-150 Fordev-151 Kiaev-152 Dodgeev-153 Volkswagenev-163 Dodgeev-164 Kiaev-165 Volkswagenev-166 Polestarev-167 BMWev-168 Dodgeev-169 Chevroletev-170 Teslaev-171 Nissanev-172 Teslaev-177 Fordev-178 Subaruev-179 Audiev-180 Teslaev-184 Lexusev-185 BMWev-186 Miniev-187 Mercedes-Benzev-192 Acuraev-193 Miniev-194 Mercedesev-195 BMWev-197 Mercedesev-198 Audiev-200 Fiatev-201 Teslaev-203 Fiatev-204 BMWev-205 BMWev-208 Polestarev-209 Mercedes-Benzev-210 Kiaev-211 Kiaev-213 Mercedes-Benzev-214 Fiatev-215 Genesisev-218 Kiaev-220 Dodgeev-221 Nissanev-227 Cadillacev-228 Nissanev-232 Mercedes-Benzev-235 Volvoev-238 Audiev-239 Genesisev-240 Audiev-241 Audiev-242 Genesisev-243 BMWev-245 Audiev-251 Miniev-252 Genesisev-255 Genesisev-256 Rivianev-258 Hyundaiev-259 Volkswagenev-260 Hyundaiev-261 Hyundaiev-265 Hyundaiev-266 Volkswagenev-267 Volkswagenev-271 Fordev-272 Fordev-278 Kiaev-279 BMWev-283 Nissanev-285 Kiaev-286 Chevroletev-289 Nissanev-292 Volkswagenev-293 Kiaev-295 Kiaev-296 smartev-297 Nissanev-298 Mitsubishiev-299 Fiatev-300 smartev-301 BMWev-302 BMWev-303 Fiatev-304 Fiatev-305 Fordev-306 Hondaev-307 Mitsubishiev-308 Mercedes Benzev-309 smartev-310 BMWev-311 BMWTrendTrendTrendTrendPrice and range were closely linked a decade ago ...Price and range were closely linked a decade ago ...... but not nearly so much today.... but not nearly so much today.2016 to 2019 models2016 to 2019 models2024 to 2026 models2024 to 2026 models

Build Path

FD EV Price/Range (faceted) Pipeline

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

Pipeline recipe graph

1 pipelines
38 nodes
27 edges

Data Flow Diagram

0/2110 nodes
0/3838 edges
2110 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

16 tables
9 transforms

Imported table

source_gallery_flowingdataevpricerangefaceted
raw
18 columns
feeds pipeline_model_age_flag_transform

ChartSpec

{
  "id": "gallery.flowingDataEvPriceRangeFaceted",
  "data": [
    {
      "id": "source_gallery_flowingdataevpricerangefaceted",
      "rows": 194
    },
    {
      "id": "pipeline_source_metadata_source",
      "rows": 1
    },
    {
      "id": "pipeline_all_ev_model_rows_from_embedded_nyt_data_source",
      "rows": 311
    },
    {
      "id": "pipeline_ev_rows_under_80_000_source",
      "rows": 287
    },
    {
      "id": "pipeline_trend_label_anchors_source",
      "rows": 2
    },
    {
      "id": "pipeline_facet_x_axis_anchors_source",
      "rows": 6
    },
    {
      "id": "pipeline_facet_y_axis_anchors_source",
      "rows": 8
    },
    {
      "id": "source_ev_models_with_age_flag",
      "rows": 194
    },
    {
      "id": "source_ev_models_faceted",
      "rows": 194
    },
    {
      "id": "source_facet_panels",
      "rows": 2
    },
    {
      "id": "source_model_points",
      "rows": 194
    },
    {
      "id": "source_trend_lines",
      "rows": 4
    },
    {
      "id": "source_trend_points",
      "rows": 4
    },
    {
      "id": "source_trend_label_points",
      "rows": 2
    },
    {
      "id": "source_x_axis_points",
      "rows": 6
    },
    {
      "id": "source_y_axis_points",
      "rows": 8
    }
  ],
  "transforms": [
    {
      "id": "pipeline_model_age_flag_transform",
      "type": "derive",
      "input": "source_gallery_flowingdataevpricerangefaceted",
      "output": "source_ev_models_with_age_flag",
      "options": {
        "derive": [
          {
            "as": "isOldModel",
            "input": "year",
            "op": "oneOf",
            "values": [
              2016,
              2017,
              2018,
              2019
            ]
          }
        ],
        "errorMethod": "standardError",
        "field": "year",
        "fit": "contain",
        "geometryField": "year",
        "groupBy": [
          "year"
        ],
        "idField": "year",
        "includeMax": false,
        "labelField": "year",
        "layoutKind": "",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "year",
        "sourceField": "year",
        "value": "year"
      }
    },
    {
      "id": "pipeline_model_era_labels_transform",
      "type": "derive",
      "input": "source_ev_models_with_age_flag",
      "output": "source_ev_models_faceted",
      "options": {
        "derive": [
          {
            "as": "modelEra",
            "falseValue": "New",
            "input": "isOldModel",
            "op": "if",
            "trueValue": "Old"
          },
          {
            "as": "facetTitle",
            "falseValue": "... but not nearly so much today.",
            "input": "isOldModel",
            "op": "if",
            "trueValue": "Price and range were closely linked a decade ago ..."
          },
          {
            "as": "facetSubtitle",
            "falseValue": "2024 to 2026 models",
            "input": "isOldModel",
            "op": "if",
            "trueValue": "2016 to 2019 models"
          }
        ],
        "errorMethod": "standardError",
        "field": "isOldModel",
        "fit": "contain",
        "geometryField": "isOldModel",
        "groupBy": [
          "isOldModel"
        ],
        "idField": "isOldModel",
        "includeMax": false,
        "labelField": "isOldModel",
        "layoutKind": "",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "isOldModel",
        "sourceField": "isOldModel",
        "value": "isOldModel"
      }
    },
    {
      "id": "pipeline_ev_facet_panel_layout_transform",
      "type": "layout",
      "input": "source_ev_models_faceted",
      "output": "source_facet_panels",
      "options": {
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-panel",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPanels",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "sourceField": "modelEra",
        "value": "modelEra",
        "xEnd": 80,
        "xField": "adjustedpricek",
        "xStart": 28,
        "yEnd": 420,
        "yField": "range",
        "yStart": 0
      }
    },
    {
      "id": "pipeline_ev_point_layout_transform",
      "type": "layout",
      "input": "source_ev_models_faceted",
      "output": "source_model_points",
      "options": {
        "endField": "range",
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-point",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "parentField": "adjustedpricek",
        "seriesBy": "adjustedpricek",
        "sourceField": "modelEra",
        "startField": "adjustedpricek",
        "targetField": "adjustedpricek",
        "value": "range",
        "xEnd": 80,
        "xField": "adjustedpricek",
        "xStart": 28,
        "yEnd": 420,
        "yField": "range",
        "yStart": 0
      }
    },
    {
      "id": "pipeline_ev_price_range_regression_transform",
      "type": "regression",
      "input": "source_ev_models_faceted",
      "output": "source_trend_lines",
      "options": {
        "errorMethod": "standardError",
        "field": "adjustedpricek",
        "fit": "contain",
        "geometryField": "adjustedpricek",
        "groupBy": [
          "modelEra"
        ],
        "idField": "adjustedpricek",
        "idPrefix": "ev-price-range-trend",
        "includeMax": false,
        "labelField": "adjustedpricek",
        "layoutKind": "",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [],
        "orderField": "adjustedpricek",
        "parentField": "range",
        "seriesBy": "range",
        "sourceField": "adjustedpricek",
        "start": 28,
        "startField": "range",
        "targetField": "range",
        "value": "range",
        "xField": "adjustedpricek",
        "yField": "range"
      }
    },
    {
      "id": "pipeline_ev_trend_layout_transform",
      "type": "layout",
      "input": "source_trend_lines",
      "output": "source_trend_points",
      "options": {
        "endField": "y",
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-trend-point",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "parentField": "x",
        "seriesBy": "x",
        "sourceField": "modelEra",
        "startField": "x",
        "targetField": "x",
        "value": "y",
        "xEnd": 80,
        "xField": "x",
        "xStart": 28,
        "yEnd": 420,
        "yField": "y",
        "yStart": 0
      }
    },
    {
      "id": "pipeline_trend_label_layout_transform",
      "type": "layout",
      "input": "pipeline_trend_label_anchors_source",
      "output": "source_trend_label_points",
      "options": {
        "endField": "range",
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-trend-label",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "parentField": "priceK",
        "seriesBy": "priceK",
        "sourceField": "modelEra",
        "startField": "priceK",
        "targetField": "priceK",
        "value": "range",
        "xEnd": 80,
        "xField": "priceK",
        "xStart": 28,
        "yEnd": 420,
        "yField": "range",
        "yStart": 0
      }
    },
    {
      "id": "pipeline_x_axis_layout_transform",
      "type": "layout",
      "input": "pipeline_facet_x_axis_anchors_source",
      "output": "source_x_axis_points",
      "options": {
        "endField": "range",
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-x-tick",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "parentField": "priceK",
        "seriesBy": "priceK",
        "sourceField": "modelEra",
        "startField": "priceK",
        "targetField": "priceK",
        "value": "range",
        "xEnd": 80,
        "xField": "priceK",
        "xStart": 28,
        "yEnd": 420,
        "yField": "range",
        "yStart": 0
      }
    },
    {
      "id": "pipeline_y_axis_layout_transform",
      "type": "layout",
      "input": "pipeline_facet_y_axis_anchors_source",
      "output": "source_y_axis_points",
      "options": {
        "endField": "range",
        "errorMethod": "standardError",
        "field": "modelEra",
        "fit": "contain",
        "geometryField": "modelEra",
        "groupBy": [
          "modelEra"
        ],
        "idField": "modelEra",
        "idPrefix": "ev-price-range-y-tick",
        "includeMax": false,
        "labelField": "modelEra",
        "layout": "pipeline_ev_price_range_facet_grid_layout",
        "layoutKind": "facetPoints",
        "layoutMode": "proportionalAngle",
        "mode": "normal",
        "order": [
          "Old",
          "New"
        ],
        "orderField": "modelEra",
        "panelHeaderHeight": 80,
        "parentField": "priceK",
        "seriesBy": "priceK",
        "sourceField": "modelEra",
        "startField": "priceK",
        "targetField": "priceK",
        "value": "range",
        "xEnd": 80,
        "xField": "priceK",
        "xStart": 28,
        "yEnd": 420,
        "yField": "range",
        "yStart": 0
      }
    }
  ],
  "axes": [],
  "grids": [],
  "legends": [],
  "fields": [
    "__rowLabel",
    "id",
    "make",
    "model",
    "modellabel",
    "year",
    "adjustedprice",
    "adjustedpricek",
    "baseprice",
    "range",
    "milesper1000dollars",
    "period",
    "tooltip",
    "tooltipeyebrow",
    "tooltiptitle",
    "tooltipbody",
    "tooltipaccentcolor",
    "articleUrl",
    "embedUrl",
    "extractedOn",
    "nytArticleUrl",
    "sourceDataset",
    "adjustedPrice",
    "adjustedPriceK",
    "basePrice",
    "milesPer1000Dollars",
    "modelLabel",
    "tooltipAccentColor",
    "tooltipBody",
    "tooltipEyebrow",
    "tooltipTitle",
    "label",
    "modelEra",
    "priceK",
    "isOldModel",
    "facetSubtitle",
    "facetTitle",
    "averageLabel",
    "averageY",
    "centerX",
    "height",
    "labelX",
    "labelY",
    "panelX0",
    "panelX1",
    "panelY0",
    "panelY1",
    "plotY0",
    "plotY1",
    "width",
    "x",
    "y",
    "intercept",
    "rSquared",
    "slope"
  ],
  "scales": [],
  "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_ev_price_range_facet_grid_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_ev_price_range_panel_old_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_ev_price_range_panel_new_layout_surface",
      "mark": "rect",
      "role": "context"
    },
    {
      "id": "pipeline_range_grid_layer",
      "mark": "line",
      "role": "guide"
    },
    {
      "id": "pipeline_range_labels_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_price_tick_marks_layer",
      "mark": "line",
      "role": "guide"
    },
    {
      "id": "pipeline_price_labels_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_facet_titles_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_facet_subtitles_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_trend_lines_layer",
      "mark": "path",
      "role": "guide",
      "path": {
        "directD": false,
        "areaBand": false,
        "closedToY": false,
        "curve": "linear",
        "groupBy": [
          "modelEra"
        ],
        "sortBy": "x"
      }
    },
    {
      "id": "pipeline_trend_labels_layer",
      "mark": "text",
      "role": "guide"
    },
    {
      "id": "pipeline_model_points_layer",
      "mark": "point",
      "role": "data"
    }
  ]
}

Resolved SceneGraph

{
  "scene": "gallery.flowingDataEvPriceRangeFaceted.scene",
  "scales": [],
  "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_ev_price_range_facet_grid_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_ev_price_range_panel_old_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_ev_price_range_panel_new_layout_surface",
      "role": "context",
      "zIndex": 0,
      "glyphs": 1
    },
    {
      "id": "pipeline_range_grid_layer",
      "role": "guide",
      "zIndex": 0,
      "glyphs": 8
    },
    {
      "id": "pipeline_range_labels_layer",
      "role": "guide",
      "zIndex": 8,
      "glyphs": 8
    },
    {
      "id": "pipeline_price_tick_marks_layer",
      "role": "guide",
      "zIndex": 8,
      "glyphs": 6
    },
    {
      "id": "pipeline_price_labels_layer",
      "role": "guide",
      "zIndex": 9,
      "glyphs": 6
    },
    {
      "id": "pipeline_trend_lines_layer",
      "role": "guide",
      "zIndex": 10,
      "glyphs": 2
    },
    {
      "id": "pipeline_model_points_layer",
      "role": "data",
      "zIndex": 20,
      "glyphs": 194
    },
    {
      "id": "pipeline_trend_labels_layer",
      "role": "guide",
      "zIndex": 25,
      "glyphs": 2
    },
    {
      "id": "pipeline_facet_titles_layer",
      "role": "guide",
      "zIndex": 30,
      "glyphs": 2
    },
    {
      "id": "pipeline_facet_subtitles_layer",
      "role": "guide",
      "zIndex": 30,
      "glyphs": 2
    }
  ]
}

Glyph Data Tree

15 layers

Full parameter lineage for the active compiler surface.

create_chart_surface

1

pipeline_view_layout_surface

1

pipeline_plot_layout_surface

1

pipeline_ev_price_range_facet_grid_layout_surface

1

pipeline_ev_price_range_panel_old_layout_surface

1

pipeline_ev_price_range_panel_new_layout_surface

1

pipeline_range_grid_layer

8

pipeline_range_labels_layer

8

pipeline_price_tick_marks_layer

6

pipeline_price_labels_layer

6

pipeline_trend_lines_layer

2

pipeline_model_points_layer

194

pipeline_trend_labels_layer

2

pipeline_facet_titles_layer

2

pipeline_facet_subtitles_layer

2

Glyph Inspector

none

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