views:

31

answers:

1

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?

+1  A: 

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);
}
trashgod
Thanks - that did the trick.
Adrian Cox