I was using add() and what do you know, addOrUpdate() works. There are still some hideous inefficiencies in DefaultTableXYDataset. I don't think I can use XYSeriesCollection because ChartFactory.createStackedXYAreaChart(...) <http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/ChartFactory.html#createStackedXYAreaChart-java.lang.String-java.lang.String-java.lang.String-org.jfree.data.xy.TableXYDataset-> expects a TableXYDataset. I'll have a look at CategoryTableXYDataset. Thanks, Joey On Tue, Jun 14, 2016 at 5:23 PM, Sean Luke <[log in to unmask]> wrote: > On Jun 14, 2016, at 9:49 PM, Joseph F Harrison <[log in to unmask]> wrote: > > > Option A) Version based on TimeTableXYDataset. > > This is the wrong dataset. Don't use it. > > > Option B) Version that uses a DefaultTableXYDataset to store the data. > > You might also try CategoryTableXYDataset or XYSeriesCollection. Anyway... > > > Here's what happens: DefaultTableXYDataset listens to the change event > for all the XYSeries you add to it. Whenever you add a value to any series > with a previously unseen x-value (e.g. x=1), it adds a dummy entry to all > the other series. Then, when you try to add a value (at x=1) to another > series, it sees the dummy value already there (at x=1) and throws a > SeriesException: X-value already exists. > > Are you using add() or are you using addOrUpdate()? The latter would > probably work, no? > > Sean >