List of usage examples for org.jfree.chart.plot XYPlot getDataset
public XYDataset getDataset(int index)
From source file:org.openfaces.component.chart.impl.renderers.XYLineFillRenderer.java
public LegendItem getLegendItem(int dataSetIndex, int series) { XYPlot plot = getPlot(); if (plot == null) { return null; }//www . j a v a 2 s.c o m LegendItem legendItem = null; XYDataset dataSet = plot.getDataset(dataSetIndex); if (dataSet != null) { if (getItemVisible(series, 0)) { legendItem = createLegendItem(dataSetIndex, series, dataSet); } } return legendItem; }
From source file:com.vgi.mafscaling.VECalc.java
private boolean plotCorrectionData() { plot3d.removeAllPlots();/*from w w w . j a v a 2 s . c om*/ XYSeries series; XYPlot plot = chartPanel.getChart().getXYPlot(); XYSeriesCollection lineDataset = (XYSeriesCollection) plot.getDataset(0); DecimalFormat df = new DecimalFormat(".00"); String val; int i = 0; int j = 0; if (!Utils.isTableEmpty(corrTable)) { try { for (i = 1; i < corrTable.getColumnCount(); ++i) { val = corrTable.getValueAt(0, i).toString(); series = new XYSeries(df.format(Double.valueOf(val))); for (j = 1; j < corrTable.getRowCount(); ++j) { if (corrTable.getValueAt(j, i) != null) { val = corrTable.getValueAt(j, i).toString(); if (!val.isEmpty()) series.add(Double.valueOf(corrTable.getValueAt(j, 0).toString()), Double.valueOf(val)); } } if (series.getItemCount() > 0) { corrData.add(series); series.setDescription(series.getKey().toString()); lineDataset.addSeries(series); } } plot.getDomainAxis(0).setAutoRange(true); plot.getRangeAxis(0).setAutoRange(true); plot.getDomainAxis(0).setLabel(xAxisName); plot.getRangeAxis(0).setLabel(yAxisName); plot.getRenderer(0).setSeriesVisible(0, false); double[] x = new double[xAxisArray.size()]; for (i = 0; i < xAxisArray.size(); ++i) x[i] = xAxisArray.get(i); double[] y = new double[yAxisArray.size()]; for (i = 0; i < yAxisArray.size(); ++i) y[i] = yAxisArray.get(i); double[][] z = Utils.doubleZArray(corrTable, x, y); Color[][] colors = Utils.generateTableColorMatrix(corrTable, 1, 1); plot3d.addGridPlot("Average Error % Plot", colors, x, y, z); } catch (NumberFormatException e) { logger.error(e); JOptionPane.showMessageDialog(null, "Error parsing number from " + corrTableName + " table, cell(" + i + " : " + j + "): " + e, "Error", JOptionPane.ERROR_MESSAGE); return false; } } return true; }
From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java
protected void removeSeries(JFreeChart chart, int seriesIndex) { Color color = (Color) chart.getPlot().getLegendItems().get(seriesIndex).getLinePaint(); palette.release(color);/*from w ww . jav a 2 s .com*/ String key = enabled.remove(seriesIndex); XYPlot plot = chart.getXYPlot(); Series<?> series = sampler.getSeries(key); Unit unit = series.getUnit(); Integer datasetIndex = datasetMapping.get(unit); TimeSeriesCollection col = (TimeSeriesCollection) plot.getDataset(datasetIndex); List<String> colIndices = seriesMapping.get(unit); int colIndex = colIndices.indexOf(key); colIndices.remove(key); col.removeSeries(colIndex); if (col.getSeriesCount() == 0) { plot.setDataset(datasetIndex, null); plot.setRangeAxis(datasetIndex, null); seriesMapping.remove(unit); datasetMapping.remove(unit); } rebuildLegend(); repaint(); gp.saveLayout(); }
From source file:org.yccheok.jstock.gui.charting.ChartLayerUI.java
private Point2D.Double getPoint(int plotIndex, int seriesIndex, int dataIndex) { final TimeSeries timeSeries = this.getTimeSeries(plotIndex, seriesIndex); if (timeSeries == null) { // Possible this is candlestick? final XYPlot plot = this.chartJDialog.getPlot(plotIndex); if (plot.getDataset(seriesIndex) instanceof org.jfree.data.xy.DefaultHighLowDataset) { return this._getPointForCandlestick(plotIndex, seriesIndex, dataIndex); }//from ww w . j a va2 s.co m return null; } if (dataIndex >= timeSeries.getItemCount()) { /* Not ready yet. */ return null; } final ChartPanel chartPanel = this.chartJDialog.getChartPanel(); final XYPlot plot = this.chartJDialog.getPlot(plotIndex); final ValueAxis domainAxis = plot.getDomainAxis(); final RectangleEdge domainAxisEdge = plot.getDomainAxisEdge(); final ValueAxis rangeAxis = plot.getRangeAxis(); final RectangleEdge rangeAxisEdge = plot.getRangeAxisEdge(); final TimeSeriesDataItem timeSeriesDataItem = timeSeries.getDataItem(dataIndex); final double xValue = timeSeriesDataItem.getPeriod().getFirstMillisecond(); final double yValue = timeSeriesDataItem.getValue().doubleValue(); final Rectangle2D plotArea = chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(plotIndex) .getDataArea(); final double xJava2D = domainAxis.valueToJava2D(xValue, plotArea, domainAxisEdge); final double yJava2D = rangeAxis.valueToJava2D(yValue, plotArea, rangeAxisEdge); // Use Double version, to avoid from losing precision. return new Point2D.Double(xJava2D, yJava2D); }
From source file:org.griphyn.vdl.karajan.monitor.monitors.swing.GraphPanel.java
private String getTooltipText(double x) { StringBuilder sb = new StringBuilder(); sb.append("<html><b>Date:</b> "); sb.append(DATE.format(new Date((long) x))); sb.append("<br>"); sb.append("<b>Time:</b>s "); sb.append(TIME.format(new Date((long) x))); sb.append("<br>"); XYPlot plot = chart.getXYPlot(); for (int i = 0; i < enabled.size(); i++) { String key = enabled.get(i); Unit unit = sampler.getSeries(key).getUnit(); int di = getDatasetIndex(unit); int si = getSeriesIndex(unit, key); Color color = (Color) chart.getXYPlot().getRenderer(di).getSeriesPaint(si); double val = binSearch(plot.getDataset(di), si, x); sb.append("<b style='color: "); sb.append(colorToHTML(color));// w ww. j av a 2 s .c om sb.append("'>"); sb.append(sampler.getSeries(key).getLabel()); sb.append(":</b> "); sb.append(unit.format(val)); sb.append("<br>"); } sb.append("</html>"); return sb.toString(); }
From source file:edu.dlnu.liuwenpeng.render.NewXYBarRenderer.java
/** * Returns a default legend item for the specified series. Subclasses * should override this method to generate customised items. * //from www . j a v a 2 s .com * @param datasetIndex the dataset index (zero-based). * @param series the series index (zero-based). * * @return A legend item for the series. */ public LegendItem getLegendItem(int datasetIndex, int series) { LegendItem result = null; XYPlot xyplot = getPlot(); if (xyplot != null) { XYDataset dataset = xyplot.getDataset(datasetIndex); if (dataset != null) { XYSeriesLabelGenerator lg = getLegendItemLabelGenerator(); String label = lg.generateLabel(dataset, series); String description = label; String toolTipText = null; if (getLegendItemToolTipGenerator() != null) { toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series); } String urlText = null; if (getLegendItemURLGenerator() != null) { urlText = getLegendItemURLGenerator().generateLabel(dataset, series); } Shape shape = this.legendBar; Paint paint = lookupSeriesPaint(series); Paint outlinePaint = lookupSeriesOutlinePaint(series); Stroke outlineStroke = lookupSeriesOutlineStroke(series); if (this.drawBarOutline) { result = new LegendItem(label, description, toolTipText, urlText, shape, paint, outlineStroke, outlinePaint); } else { result = new LegendItem(label, description, toolTipText, urlText, shape, paint); } result.setDataset(dataset); result.setDatasetIndex(datasetIndex); result.setSeriesKey(dataset.getSeriesKey(series)); result.setSeriesIndex(series); if (getGradientPaintTransformer() != null) { result.setFillPaintTransformer(getGradientPaintTransformer()); } } } return result; }
From source file:org.moeaframework.analysis.plot.Plot.java
/** * Creates a new area plot series. The data will be stacked with * any preceding calls to {@code stacked}. The series is added to the given * dataset, or if {@code null} a new dataset is created. * //from ww w. j a v a2 s . com * @param label the label for the series * @param x the x values * @param y the y values * @param dataset the dataset, or {@code null} if a new dataset should be * created * @return a reference to this {@code Plot} instance */ private Plot stacked(String label, List<? extends Number> x, List<? extends Number> y, DefaultTableXYDataset dataset) { if (dataset == null) { createXYPlot(); XYPlot plot = chart.getXYPlot(); if (plot.getDataset(currentDataset) instanceof DefaultTableXYDataset) { dataset = (DefaultTableXYDataset) plot.getDataset(currentDataset); } else { currentDataset++; dataset = new DefaultTableXYDataset(); } } // generate the dataset XYSeries series = new XYSeries(label, true, false); for (int i = 0; i < x.size(); i++) { series.add(x.get(i), y.get(i)); } dataset.addSeries(series); // add the dataset to the plot XYPlot plot = chart.getXYPlot(); plot.setDataset(currentDataset, dataset); // setup the renderer Paint paint = paintHelper.get(dataset.getSeriesKey(0)); StackedXYAreaRenderer renderer = new StackedXYAreaRenderer(); renderer.setAutoPopulateSeriesStroke(false); renderer.setBaseStroke(new BasicStroke(3f, 1, 1)); renderer.setBasePaint(paint); renderer.setBaseFillPaint(paint); plot.setRenderer(currentDataset, renderer); return this; }
From source file:org.moeaframework.analysis.plot.Plot.java
/** * Modifies the paint (e.g,. color) of each series in the last dataset. * If the dataset contains more series than the number of arguments, the * arguments are reused as needed.//from w w w . jav a2 s. c o m * * @param paint one or more paint instances * @return a reference to this {@code Plot} instance */ public Plot withPaint(Paint... paint) { if (chart.getPlot() instanceof XYPlot) { XYPlot plot = chart.getXYPlot(); XYDataset dataset = plot.getDataset(currentDataset); XYItemRenderer renderer = plot.getRenderer(currentDataset); for (int i = 0; i < dataset.getSeriesCount(); i++) { Paint p = paint[i % paint.length]; paintHelper.set(dataset.getSeriesKey(i), p); renderer.setSeriesPaint(i, p); if (renderer instanceof XYLineAndShapeRenderer) { ((XYLineAndShapeRenderer) renderer).setSeriesFillPaint(i, p); } } } else if (chart.getPlot() instanceof CategoryPlot) { CategoryPlot plot = chart.getCategoryPlot(); CategoryDataset dataset = plot.getDataset(); CategoryItemRenderer renderer = plot.getRenderer(); for (int i = 0; i < dataset.getRowCount(); i++) { Paint p = paint[i % paint.length]; paintHelper.set(dataset.getRowKey(i), p); renderer.setSeriesPaint(i, p); } } return this; }
From source file:msi.gama.outputs.layers.charts.StandardXYItemRenderer.java
/** * Returns a legend item for a series.//from w w w.j av a 2s .c o m * * @param datasetIndex * the dataset index (zero-based). * @param series * the series index (zero-based). * * @return A legend item for the series. */ @Override public LegendItem getLegendItem(final int datasetIndex, final int series) { final XYPlot plot = getPlot(); if (plot == null) { return null; } LegendItem result = null; final XYDataset dataset = plot.getDataset(datasetIndex); if (dataset != null) { if (getItemVisible(series, 0)) { final String label = getLegendItemLabelGenerator().generateLabel(dataset, series); final String description = label; String toolTipText = null; if (getLegendItemToolTipGenerator() != null) { toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series); } String urlText = null; if (getLegendItemURLGenerator() != null) { urlText = getLegendItemURLGenerator().generateLabel(dataset, series); } final Shape shape = lookupLegendShape(series); final boolean shapeFilled = getItemShapeFilled(series, 0); final Paint paint = lookupSeriesPaint(series); final Paint linePaint = paint; final Stroke lineStroke = lookupSeriesStroke(series); result = new LegendItem(label, description, toolTipText, urlText, this.baseShapesVisible, shape, shapeFilled, paint, !shapeFilled, paint, lineStroke, this.plotLines, this.legendLine, lineStroke, linePaint); result.setLabelFont(lookupLegendTextFont(series)); final Paint labelPaint = lookupLegendTextPaint(series); if (labelPaint != null) { result.setLabelPaint(labelPaint); } result.setDataset(dataset); result.setDatasetIndex(datasetIndex); result.setSeriesKey(dataset.getSeriesKey(series)); result.setSeriesIndex(series); } } return result; }
From source file:io.github.mzmine.util.jfreechart.IntelligentItemLabelGenerator.java
/** * @see org.jfree.chart.labels.XYItemLabelGenerator#generateLabel(org.jfree.data.xy.XYDataset, * int, int)/*from w w w.j av a 2s .c om*/ */ public String generateLabel(XYDataset currentDataset, int currentSeries, int currentItem) { XYPlot plot = chartNode.getChart().getXYPlot(); // X and Y values of the current data point final double currentXValue = currentDataset.getXValue(currentSeries, currentItem); final double currentYValue = currentDataset.getYValue(currentSeries, currentItem); // Calculate X axis span of 1 screen pixel final double xLength = plot.getDomainAxis().getRange().getLength(); final double pixelX = xLength / chartNode.getWidth(); // Calculate the distance from the current point where labels might // overlap final double dangerZoneX = (reservedPixels / 2) * pixelX; // Range on X axis that we're going to check for higher data points. If // a higher data point is found, we don't place a label on this one. final Range<Double> dangerZoneRange = Range.closed(currentXValue - dangerZoneX, currentXValue + dangerZoneX); // Iterate through data sets for (int datasetIndex = 0; datasetIndex < plot.getDatasetCount(); datasetIndex++) { XYDataset dataset = plot.getDataset(datasetIndex); // Some data sets could have been removed if (dataset == null) continue; final int seriesCount = dataset.getSeriesCount(); // Iterate through series for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) { final int itemCount = dataset.getItemCount(seriesIndex); // Find the index of a data point that is closest to // currentXValue int closestValueIndex; if (dataset == currentDataset && seriesIndex == currentSeries) { closestValueIndex = currentItem; } else { closestValueIndex = findClosestXIndex(dataset, seriesIndex, currentXValue, 0, itemCount - 1); } // Search to the left of the closest data point for (int i = closestValueIndex; (i >= 0) && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i--) { if (dataset.getYValue(seriesIndex, i) > currentYValue) return null; // In the case there are equal values, only place the label // on the leftmost value if (dataset.getYValue(seriesIndex, i) == currentYValue && (dataset.getXValue(seriesIndex, i) < currentXValue)) return null; } // Search to the right of the closest data point for (int i = closestValueIndex + 1; (i < itemCount) && (dangerZoneRange.contains(dataset.getX(seriesIndex, i).doubleValue())); i++) { if (dataset.getYValue(seriesIndex, i) > currentYValue) return null; } } } // If no higher data point was found, create the label String label = underlyingGenerator.generateLabel(currentDataset, currentSeries, currentItem); return label; }