> Markdown version of [Scatter](https://vaadin.com/docs/next/components/charts/charttypes/scatter). Section index: [llms.txt](https://vaadin.com/docs/next/components/llms.txt)

# <a id="charts.charttypes.scatter"></a>Scatter Charts

Scatter charts display a set of unconnected data points. The name refers to given X and Y coordinates, so the `DataSeries` or `DataProviderSeries` are usually the most meaningful data series types for scatter charts.

[Image: charts scatter]

Scatter Chart

The chart type of a scatter chart is `ChartType.SCATTER`. Its options can be configured in a `PlotOptionsScatter` object, although it doesn’t have any chart-type-specific options.

```java
Chart chart = new Chart(ChartType.SCATTER);

// Modify the default configuration a bit
Configuration conf = chart.getConfiguration();
conf.setTitle("Random Sphere");
conf.getLegend().setEnabled(false); // Disable legend
conf.getxAxis().setTitle("X");
conf.getyAxis().setTitle("Y");
conf.getxAxis().setMax(1);
conf.getxAxis().setMin(-1);
conf.getyAxis().setMax(1);
conf.getyAxis().setMin(-1);

PlotOptionsScatter options = new PlotOptionsScatter();
// ... Give general plot options here ...
conf.setPlotOptions(options);

DataSeries series = new DataSeries();
for (int i=0; i<300; i++) {
    double lng = Math.random() * 2 * Math.PI;
    double lat = Math.random() * Math.PI - Math.PI/2;
    double x   = Math.cos(lat) * Math.sin(lng);
    double y   = Math.sin(lat);

    DataSeriesItem point = new DataSeriesItem(x,y);
    series.add(point);
}
conf.addSeries(series);
```

The result is shown in [Scatter Chart](#figure.charts.charttypes.scatter).

## <a id="scatter-example"></a>Scatter Example

**Flow** — `ChartTypeScatter.java`

```java
Chart chart = new Chart(ChartType.SCATTER);

Configuration configuration = chart.getConfiguration();

configuration
        .setTitle("Height Versus Weight of 507 Individuals by Gender");
configuration.setSubTitle("Source: Heinz  2003");

XAxis xAxis = configuration.getxAxis();
xAxis.setTitle("Height (cm)");
xAxis.setStartOnTick(true);
xAxis.setEndOnTick(true);
xAxis.setShowLastLabel(true);

Legend legend = configuration.getLegend();
legend.setLayout(LayoutDirection.VERTICAL);
legend.setAlign(HorizontalAlign.LEFT);
legend.setVerticalAlign(VerticalAlign.TOP);
legend.setX(100);
legend.setY(70);
legend.setFloating(true);

PlotOptionsScatter plotOptionsScatter = new PlotOptionsScatter();
SeriesTooltip scatterTooltip = plotOptionsScatter.getTooltip();
scatterTooltip.setHeaderFormat(
        "<b>{series.name}</b><br>\",\"pointFormat\":\"{point.x} cm, {point.y} kg");

DataSeries femaleSeries = new DataSeries();
femaleSeries.setName("Female");

PlotOptionsScatter femalePlotOptions = new PlotOptionsScatter();
femalePlotOptions.setClassName("femaleSeries");
femaleSeries.setPlotOptions(femalePlotOptions);

Number[][] femaleData = getFemaleData();
for (int i = 0; i < femaleData.length; i++) {
    DataSeriesItem item = new DataSeriesItem(femaleData[i][1],
            femaleData[i][0]);
    femaleSeries.add(item);
}
configuration.addSeries(femaleSeries);

DataSeries maleSeries = new DataSeries();
maleSeries.setName("Male");

PlotOptionsScatter malePlotOptions = new PlotOptionsScatter();
malePlotOptions.setClassName("maleSeries");
maleSeries.setPlotOptions(malePlotOptions);

Number[][] maleData = getMaleData();
for (int i = 0; i < maleData.length; i++) {
    DataSeriesItem item = new DataSeriesItem(maleData[i][1],
            maleData[i][0]);
    maleSeries.add(item);
}
configuration.addSeries(maleSeries);
```
