DefaultTableXYDataset ds = new DefaultTableXYDataset();
@Override public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection, HttpServletRequest request) { String seriesParam = ServletRequestUtils.getStringParameter(request, "sp", null); for (int i = 0; i < statNames.size(); i++) { String statName = statNames.get(i); if (seriesParam != null) { statName = MessageFormat.format(statName, seriesParam); } List<XYDataItem> stats = statsCollection.getStats(statName); if (stats != null) { String series = ServletRequestUtils.getStringParameter(request, "s" + (i + 1) + "l", "series" + i); dataset.addSeries(toSeries(series, stats)); } } } }
/** * Returns a series. * * @param series the series (zero-based index). * * @return The series (never {@code null}). */ public XYSeries getSeries(int series) { if ((series < 0) || (series >= getSeriesCount())) { throw new IllegalArgumentException("Index outside valid range."); } return (XYSeries) this.data.get(series); }
/** * This method receives notification when a series belonging to the dataset * changes. It responds by updating the x-points for the entire dataset * and sending a {@link DatasetChangeEvent} to all registered listeners. * * @param event information about the change. */ public void seriesChanged(SeriesChangeEvent event) { if (this.propagateEvents) { updateXPoints(); fireDatasetChanged(); } }
/** * Removes all x-values for which all the y-values are {@code null}. */ public void prune() { HashSet hs = (HashSet) this.xPoints.clone(); Iterator iterator = hs.iterator(); while (iterator.hasNext()) { Number x = (Number) iterator.next(); if (canPrune(x)) { removeAllValuesForX(x); } } }
public static DefaultTableXYDataset createXYDataset(String[] series, List<Double> times, List<Object[]> timeProfile) { XYSeries[] seriesArray = new XYSeries[series.length]; for (int s = 0; s < series.length; s++) { seriesArray[s] = new XYSeries(series[s], false, false); } for (int t = 0; t < timeProfile.size(); t++) { Object[] timePoint = timeProfile.get(t); double hour = times.get(t) / 3600; for (int s = 0; s < series.length; s++) { seriesArray[s].add(hour, Double.parseDouble(timePoint[s] + "")); } } DefaultTableXYDataset dataset = new DefaultTableXYDataset(); for (int s = 0; s < series.length; s++) { dataset.addSeries(seriesArray[s]); } return dataset; }
/** * Returns an independent copy of this dataset. * * @return A clone. * * @throws CloneNotSupportedException if there is some reason that cloning * cannot be performed. */ @Override public Object clone() throws CloneNotSupportedException { DefaultTableXYDataset clone = (DefaultTableXYDataset) super.clone(); int seriesCount = this.data.size(); clone.data = new java.util.ArrayList(seriesCount); for (int i = 0; i < seriesCount; i++) { XYSeries series = (XYSeries) this.data.get(i); clone.data.add(series.clone()); } clone.intervalDelegate = new IntervalXYDelegate(clone); // need to configure the intervalDelegate to match the original clone.intervalDelegate.setFixedIntervalWidth(getIntervalWidth()); clone.intervalDelegate.setAutoWidth(isAutoWidth()); clone.intervalDelegate.setIntervalPositionFactor( getIntervalPositionFactor()); clone.updateXPoints(); return clone; }
/** * Removes a series from the collection and sends a * {@link DatasetChangeEvent} to all registered listeners. * * @param series the series (zero based index). */ public void removeSeries(int series) { // check arguments... if ((series < 0) || (series > getSeriesCount())) { throw new IllegalArgumentException("Index outside valid range."); } // fetch the series, remove the change listener, then remove the series. XYSeries s = (XYSeries) this.data.get(series); s.removeChangeListener(this); this.data.remove(series); if (this.data.isEmpty()) { this.xPoints.clear(); } else if (this.autoPrune) { prune(); } fireDatasetChanged(); }
/** * Sets the interval width to a fixed value, and sends a * {@link DatasetChangeEvent} to all registered listeners. * * @param d the new interval width (must be > 0). */ public void setIntervalWidth(double d) { this.intervalDelegate.setFixedIntervalWidth(d); fireDatasetChanged(); }
/** * Creates a new empty dataset. * * @param autoPrune a flag that controls whether or not x-values are * removed whenever the corresponding y-values are all * {@code null}. */ public DefaultTableXYDataset(boolean autoPrune) { this.autoPrune = autoPrune; this.data = new ArrayList(); this.xPoints = new HashSet(); this.intervalDelegate = new IntervalXYDelegate(this, false); addChangeListener(this.intervalDelegate); }
/** * transfer a XYModel into JFreeChart DefaultTableXYDataset. */ private TableXYDataset XYModelToTableXYDataset(XYModel model) { final DefaultTableXYDataset dataset = new DefaultTableXYDataset(); for (final Iterator it = model.getSeries().iterator(); it.hasNext();) { final Comparable series = (Comparable) it.next(); XYSeries xyser = new XYSeries(series, false, false); final int size = model.getDataCount(series); for(int j = 0; j < size; ++j) { xyser.add(model.getX(series, j), model.getY(series, j), false); } dataset.addSeries(xyser); } return dataset; }
/** * Returns an independent copy of this dataset. * * @return A clone. * * @throws CloneNotSupportedException if there is some reason that cloning * cannot be performed. */ public Object clone() throws CloneNotSupportedException { DefaultTableXYDataset clone = (DefaultTableXYDataset) super.clone(); int seriesCount = this.data.size(); clone.data = new java.util.ArrayList(seriesCount); for (int i = 0; i < seriesCount; i++) { XYSeries series = (XYSeries) this.data.get(i); clone.data.add(series.clone()); } clone.intervalDelegate = new IntervalXYDelegate(clone); // need to configure the intervalDelegate to match the original clone.intervalDelegate.setFixedIntervalWidth(getIntervalWidth()); clone.intervalDelegate.setAutoWidth(isAutoWidth()); clone.intervalDelegate.setIntervalPositionFactor( getIntervalPositionFactor()); clone.updateXPoints(); return clone; }
/** * Removes a series from the collection and sends a * {@link DatasetChangeEvent} to all registered listeners. * * @param series the series (zero based index). */ public void removeSeries(int series) { // check arguments... if ((series < 0) || (series > getSeriesCount())) { throw new IllegalArgumentException("Index outside valid range."); } // fetch the series, remove the change listener, then remove the series. XYSeries s = (XYSeries) this.data.get(series); s.removeChangeListener(this); this.data.remove(series); if (this.data.size() == 0) { this.xPoints.clear(); } else if (this.autoPrune) { prune(); } fireDatasetChanged(); }
/** * This method receives notification when a series belonging to the dataset * changes. It responds by updating the x-points for the entire dataset * and sending a {@link DatasetChangeEvent} to all registered listeners. * * @param event information about the change. */ @Override public void seriesChanged(SeriesChangeEvent event) { if (this.propagateEvents) { updateXPoints(); fireDatasetChanged(); } }
/** * Sets the flag that indicates whether the interval width is automatically * calculated or not. * * @param b a boolean. */ public void setAutoWidth(boolean b) { this.intervalDelegate.setAutoWidth(b); fireDatasetChanged(); }
/** * Removes all x-values for which all the y-values are <code>null</code>. */ public void prune() { HashSet hs = (HashSet) this.xPoints.clone(); Iterator iterator = hs.iterator(); while (iterator.hasNext()) { Number x = (Number) iterator.next(); if (canPrune(x)) { removeAllValuesForX(x); } } }
/** * Creates a new empty dataset. * * @param autoPrune a flag that controls whether or not x-values are * removed whenever the corresponding y-values are all * <code>null</code>. */ public DefaultTableXYDataset(boolean autoPrune) { this.autoPrune = autoPrune; this.data = new ArrayList(); this.xPoints = new HashSet(); this.intervalDelegate = new IntervalXYDelegate(this, false); addChangeListener(this.intervalDelegate); }
XYSeries series1 = new XYSeries("First", true, false); series1.add(0.1, 25); series1.add(0.2, 43); series1.add(0.5, 70); series1.add(0.64, 94); series1.add(0.9, 112); XYSeries series2 = new XYSeries("Second", true, false); series2.add(0.9, 112); series2.add(1.1, 150); series2.add(1.3, 175); series2.add(1.5, 200); series2.add(1.7, 225); series2.add(1.9, 250); DefaultTableXYDataset dataset = new DefaultTableXYDataset(); dataset.addSeries(series1); dataset.addSeries(series2); return dataset;
dataset.addSeries(toSeries(ser.key, ser.stats));
DefaultTableXYDataset dataset = new DefaultTableXYDataset(); chartData.processData(dataset); chart = ConfluenceChartFactory.createStackedXYAreaChart(title, xLabel, yLabel, dataset, plotOrientation,