/toggleable-series-chart

A JavaFX XYChart-Wrapper that adds toggle-checkboxes for each series.

Primary LanguageJava

Build Status Maven Central Dependency Status

Toggleable Series Chart for JavaFX

This is a JavaFX control that wraps an XYChart (LineChart, AreaChart etc.) and adds a visibility-toggle checkbox for each series of the chart. It is not very customizable yet. Feel free to contribute if you need more features ;)

This is how it looks like in action:

Sample Image

Getting started

FXML

<ToggleableSeriesChart fx:id="chart" HBox.hgrow="ALWAYS">
    <chart>
        <!-- You can add any type of XYChart here -->
        <AreaChart animated="false">
            <xAxis>
                <NumberAxis side="BOTTOM"/>
            </xAxis>
            <yAxis>
                <NumberAxis side="LEFT"/>
            </yAxis>
        </AreaChart>
    </chart>
</ToggleableSeriesChart>

Controller

public class DemoController {

    public ToggleableSeriesChart<Number, Number> chart;

    public void initialize() {
        final XYChart.Series<Number, Number> series1 = new XYChart.Series<>();
        series1.setName("x²");
        final XYChart.Series<Number, Number> series2 = new XYChart.Series<>();
        series2.setName("sin(x)");
        final XYChart.Series<Number, Number> series3 = new XYChart.Series<>();
        series3.setName("cos(x)");

        for (double i = -1 * Math.PI; i <= Math.PI; i = i + 0.01d) {
            series1.getData().add(new XYChart.Data<>(i, (i * i) - 1));
            series2.getData().add(new XYChart.Data<>(i, Math.sin(i)));
            series3.getData().add(new XYChart.Data<>(i, Math.cos(i)));
        }

        chart.getData().addAll(series1, series2, series3);
    }

}