scatterchart
Plot data points as individual dots across two axes sourced from the data fields; can be faceted.

view scatterchart -o {
   title: string,
   markerSize: n,
   markerOpacity: n,
   duration: duration,
   limit: n,
   valueField: fieldname,
   controlField: fieldname,
   keyField: fieldname,
   timeField: fieldname,
   xScales: {
     primary: {
       label: string,
       tickFormat: d3FormatString,
       minValue: value,
       maxValue: value
     }
   },
   yScales: {
     primary: {
       label: string,
       tickFormat: d3FormatString,
       minValue: value,
       maxValue: value,
       displayOnAxis: 'left|right'
     }
   },
   tooltip: {
     titleField: fieldname,
     controlLabel: string,
     controlFormat: d3FormatString,
     valueLabel: string,
     valueFormat: d3FormatString
   },
   series: [
   {
     name: 'string',
     label: 'string',
     color: 'color'
   },
   {
     name: 'anotherseries',
     ...
   }
   ],
   facet: {
     fields: [field1, ...fieldN],
     width: n,
     height: n
   }
or
view scatterchart -title string
-markerSize n -markerOpacity n -duration duration -limit n
-valueField fieldname -controlField fieldname -keyField fieldname -timeField fieldname
-xScales.primary.label string -xScales.primary.tickFormat d3FormatString -xScales.primary.minValue value -xScales.primary.maxValue value
-yScales.primary.label string -yScales.primary.tickFormat d3FormatString -yScales.primary.minValue value -yScales.primary.maxValue value -yScales.primary.displayOnAxis 'left|right'
-tooltip.titleField fieldname -tooltip.controlLabel string -tooltip.controlFormat d3FormatString -tooltip.valueLabel string -tooltip.valueFormat d3FormatString
-series [{name: 'string', label: 'string', color: 'color'},{name: 'anotherseries', ...}]
  -facet.fields field1, ...fieldN -facet.width n -face.height n
| Parameter | Description | Required? | 
|---|---|---|
-title | 
The title for the user-visible output, if it has one; the value may be any valid Juttle expression that produces a string | No; defaults to the name field that is present in all metrics points | 
-markerSize | 
The pixel size of the circle for each point | No; defaults to 6 | 
-markerOpacity | 
The opacity level of the datapoint marker, a number between 0.1 (10%) and 1 (100%) | No; defaults to 1 | 
-duration | 
The span of time to display, either in seconds (>=10) or as a Juttle moment literal | No; defaults to 5 minutes when querying live data | 
-limit | 
The maximum number of total data points to display | No; defaults to the first 1000 to avoid consuming unbounded memory | 
-valueField | 
The name of the field to use as the source for the numeric values | No; defaults to the value field that is present in all metrics points. If no value field is present, the first numeric field in the stream is used. | 
-controlField | 
The name of the field to use as the source for the X-axis values | No; defaults to a field called control, if present, otherwise the second numerical field in the stream | 
-keyField | 
The field containing the name of the series to which each point belongs | Required when series is configured; otherwise Jut looks for unique streams and creates a series for each one. For simple metrics, the key field defaults to the name field that is present in all metrics points | 
-timeField | 
The field containing the time stamp | No; defaults to the time field | 
-xScales.primary.label | 
A string to label the X axis | No; defaults to the name of the -controlField | 
-xScales.primary.tickFormat | 
Customize the unit display for this axis, using the d3 number formatting syntax | No | 
-xScales.primary.minValue | 
The value at the left end of the X scale | No; the default is automatically derived from your data | 
-xScales.primary.maxValue | 
The value at the right end of the X scale | No; the default is automatically derived from your data | 
-yScales.primary.label | 
A string to label the Y axis | No; default is the name of the -valueField | 
-yScales.primary.tickFormat | 
Customize the unit display for the Y axis, using the d3 number formatting syntax | No | 
-yScales.primary.minValue | 
The value at the bottom of the Y scale | No; the default is automatically derived from your data | 
-yScales.primary.maxValue | 
The value at the top of the Y scale | No; the default is automatically derived from your data | 
-yScales.primary.displayOnAxis | 
Where to display the Y axis; must be exactly one of the following depending on whether your bar chart is oriented vertically or horizontally:
  | 
No; the default is left | 
-tooltip.titleField | 
The name of the field containing a string to use as the title for the tooltip | No; defaults to the -keyField | 
-tooltip.controlLabel | 
A string for the label to display in the tooltip for the -controlField value | No; defaults to the -xScales.primary.label | 
-tooltip.controlFormat | 
The format for the -tooltip.titleField, using the d3 number formatting syntax | 
No; defaults to the -xScales.primary.tickFormat | 
-tooltip.valueLabel | 
A string for the label to display in the tooltip for the -valueField value | No; defaults to the -yScales.primary.label | 
-tooltip.valueFormat | 
The format for the -tooltip.valueField, using the d3 number formatting syntax | No; defaults to the -yScales.primary.tickFormat | 
-series | 
Configure one or more data series individually, using one or more arrays with additional parameters, see below | No | 
-facet.fields | 
A comma-separated list of the fields on which facets are based | Required to enable faceting; omit this option to disable facets | 
-facet.width | 
The width configuration for facets, which may be a fluid or fixed width: 
  | 
No; defaults to '1/3' | 
-facet.height | 
A number larger than 80 defining the fixed pixel height of individual facets | No; the default height is calculated based on the width | 
Series Parameters
   -series [   
   {   
     name : 'seriesname',   
     label : 'string',   
     color : 'color'   
   },   
   {   
     name : 'someotherseries',   
     ...   
   }   
   ]   
| Parameter | Description | 
|---|---|
name | 
A series name that can be found in the specified -keyField; this parameter is required for any configured series. | 
label | 
An optional string to override the scale label for this series | 
color | 
The color to use for this series, specified with any CSS3-supported hex or name value; if not specified, a color is selected from the built-in palette | 
Example: Display a scatterchart showing CPU usage versus response time
(
    read stochastic -source 'srch_cluster' -from :2 minutes ago: name = 'response_ms';
    read stochastic -source 'srch_cluster' -from :2 minutes ago: name = 'cpu'
)
| put *name = value
| join
| keep time, cpu, response_ms, service
| view scatterchart -o {
    valueField: 'response_ms',
    controlField: 'cpu',
    keyField: 'service',
    xScales: {
        primary: {
            label: 'CPU Utilization (%)',
            tickFormat: '%'
        }
    },
    yScales: {
        primary: {
            label: 'Response Time (ms)'
        }
    },
    duration: :5m:
}

Example: Display a faceted scatterchart
(
emit -limit 10 | put  response_ms = count(), cpu = count(), service = 'search', host = 'host1';
emit -limit 10 | put  response_ms = count()*2, cpu = count()*2, service = 'index', host = 'host2';
emit -limit 10 | put  response_ms = count()*3, cpu = count()*3, service = 'auth', host = 'host1';
emit -limit 10 | put  response_ms = count()*4, cpu = count()*4, service = 'test', host = 'host2';
emit -limit 10 | put  response_ms = count()*5, cpu = count()*5, service = 'tim', host = 'host1';
)
| view scatterchart -o {
  title: 'Faceted Scatter Chart',
  valueField: 'cpu',
  controlField: 'response_ms',
  facet: {
    fields: ['service'],
    width: '1/3',
    height: 150
  },
  duration: :10s:
}
