Skip to content

Scatter / bubble ​

Points positioned by two metrics, optionally sized and grouped. A bubble is a scatter with a larger default marker.

Identity ​

chartTypescatter · bubble
Option bagscatter
seriesData layoutpointRows – row 0 names metrics; later rows are points
Min grid2 rows × 3 columns
OrientationLinear X/Y – not category band remap like bars
SampleScatter

Minimal chartData ​

js
{
  chartType: 'scatter', // or 'bubble'
  seriesData: [
    ['', 'Metric X', 'Metric Y', 'Size', 'Group'],
    ['A', 10, 15, 8, 'G1'],
    ['B', 14, 11, 12, 'G1'],
    ['C', 8, 20, 6, 'G2'],
  ],
  title: { visible: true, text: 'Scatter' },
  subtitle: { visible: false, text: '' },
}

seriesData ​

Scatter does not use bar/line transpose. Layout is pointRows:

js
[
  ['', 'Metric X', 'Metric Y', 'Size', 'Group'],
  ['Point 1', 10, 15, 8, 'A'],
  ['Point 2', 14, 11, 12, 'A'],
]
Column (typical)Role
0Point label
1X metric
2Y metric
3Optional size
4Optional group

Minimum: header + one point, with at least X and Y columns.

Shared layout rules: chartData schema · seriesData.


Option bag: scatter ​

FieldDefault (new charts)Role
diameter10 for scatter; larger (~45) for bubbleMarker diameter (px)
shape'circle'Default marker shape
shapes[]Optional per-series shape list
seriesStrokes / widths / dash[]Per-series stroke chrome
overrides{}Indexed style patches
js
{
  chartType: 'bubble',
  seriesData: [/* … */],
  // diameter already seeded larger; override only if needed:
  scatter: { diameter: 36, shape: 'circle' },
}

getChartData() returns chartType: 'scatter' with the larger diameter already set.


Axes & scales ​

RoleBehaviour
DomainLinear X (runtime forces linear; not a category band)
Primary rangeLinear Y

Format both linear sides. Ignore category fitMechanism / date wrap unless you intentionally treat labels as categories (you usually do not).

Details: Axes · by chart type · Domain axis.


Type-specific behaviour ​

  • Size / group columns are optional but common for bubble-style decks.
  • Palette / grouping still ties into legend colors.
  • Prefer editor + getChartData() for per-point overrides.

Pitfalls ​

  • Using isDataTransposed: true series-rows layout meant for bars
  • Putting options in pie / bar on a scatter
  • Expecting category wrap/rotate behaviour from band axes
  • Expecting getChartData() to keep chartType: 'bubble' — it returns scatter with the larger diameter

Developer documentation for Chartbuddy Embed · Not the end-user Help Center · Help Center