Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mapping JFreeChart Series Name to Series Index

I'm plotting a TimeTableXYDataset using a StackedXYBarRenderer. Unfortunately the colours of each series change on refresh.

I know how to set colours using the setSeriesPaint method of the renderer, but that takes an integer series index as the argument. I create my datapoints using a string as the series name:

ds.add(new SimpleTimePeriod(us.getDate(), 
                            new Date(us.getDate().getTime() + 1000*60)),
       us.getTotal(), us.getName()));

How do I discover the mapping between series name and series index so I can call setSeriesPaint?

like image 732
Adrian Cox Avatar asked Jun 21 '10 07:06

Adrian Cox


1 Answers

The easiest approach is to update a suitable Map as the data accumulates. Alternatively, the methods getSeriesKey() and indexOf() may be used to convert in either direction. For example,

for (int i = 0; i < ds.getSeriesCount(); i++) {
    String name = (String) ds.getSeriesKey(i);
    System.out.println(ds.indexOf(name) + ": " + name);
}
like image 109
trashgod Avatar answered Oct 20 '22 10:10

trashgod