1

Is it possible to show only the selected category's values on JFreeChart?

chart http://img200.imageshack.us/img200/8329/2npa.png

For example, I have three categories on above picture and I want to give user to a selection option to see only selected category's value.

This is my JFreeChart creation code:

    lineDataset = new XYSeriesCollection();
    JFreeChart result = ChartFactory.createXYAreaChart("", "Mesafe", "Seviye", lineDataset, PlotOrientation.VERTICAL, true, true, false);
    plot = (XYPlot) result.getPlot();
    ValueAxis axis = plot.getDomainAxis();
    axis.setAutoRange(true);
trashgod
  • 203,806
  • 29
  • 246
  • 1,045
cgrgcn
  • 361
  • 2
  • 6
  • 24

1 Answers1

2

Getting renderer from plot gives us a chance to setVisibility of series by

renderer = plot.getRenderer();
renderer.setSeriesVisible(int indexOfSeries, Boolean isSelected);

Create checkBoxes for each series and adding Selection or Action listener to these checkbox is great way for this interaction between chart and user.

for SWT:

        Button btnCheckButton = new Button(parent, SWT.CHECK);
        btnCheckButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if(btnCheckButton.getSelection()) {
                    setSeriesVisibility((Integer)btnCheckButton.getData(seriesName), true);
                } else {
                    setSeriesVisibility((Integer)btnCheckButton.getData(seriesName), false);
                }
            }
        });
        btnCheckButton.setText(seriesName);
        btnCheckButton.setData(seriesName, index);
        btnCheckButton.setSelection(true);

And this is setter function

public void setSeriesVisibility(int i, boolean isSelected) {
    renderer.setSeriesVisible(i, isSelected);
}
cgrgcn
  • 361
  • 2
  • 6
  • 24
  • 1
    Good to know this works with SWT; a complete Swing example is shown [here](http://stackoverflow.com/a/11895709/230513). – trashgod Sep 19 '13 at 16:07