Looks like a stupid bug. As a first cut, try replacing the PieChartSeriesAttributes.getElements() method with: Object[] getElements() { if (elements != null) return elements; else if (elements2 != null) return elements2.toArray(); else return null; } Sean On Sep 1, 2015, at 7:56 PM, Tschanen Miriam <[log in to unmask]> wrote: > Hi all, > > I'm trying to set up a custom bar chart for my model, since the level of control I have over the default inspectors isn't quite enough for my needs. I stumbled upon the sim.display.ChartUtilities class and tried to use it to attach a bar chart directly to my simulation. Unfortunately, I can't figure out how to use it correctly, or rather I am constantly getting a NullPointerException as soon as the simulation runs. > > As outlined in its documentation, I call the following functions in my GUIstate class to set up the bar chart: > > public void init(Controller c) { > ... > > BarChartGenerator bcgenerator = ChartUtilities.buildBarChartGenerator(this, "Bar Chart"); > barchart = ChartUtilities.addSeries(bcgenerator, "Bar Chart"); <-- this is where the exception triggers > } > > public void setupPortrayals() { > ... > > ChartUtilities.scheduleSeries(this, barchart, sim.data); > } > > These are the top few lines of the trace: > java.lang.NullPointerException > at sim.util.media.chart.PieChartSeriesAttributes.getElements(PieChartSeriesAttributes.java:40) > at sim.util.media.chart.PieChartGenerator.update(PieChartGenerator.java:136) > at sim.util.media.chart.PieChartGenerator.addSeries(PieChartGenerator.java:187) > at sim.display.ChartUtilities.addSeries(ChartUtilities.java:569) > > Either I'm missing something important or there is a bug in the implementation of addSeries. Is there some other way I can create a bar chart with full control over the labels and categories? As I mentioned, the default inspector isn't much help, for instance it sorts numerical categories in an awful way (placing 10 before 2 etc). > > Cheers, > Miriam Tschanen