List of usage examples for org.jfree.data.time TimeSeriesCollection getSeries
public TimeSeries getSeries(Comparable key)
null
if there is no such series. From source file:org.jfree.data.time.MovingAverage.java
/** * Creates a new {@link TimeSeriesCollection} containing a moving average * series for each series in the source collection. * * @param source the source collection. * @param suffix the suffix added to each source series name to create the * corresponding moving average series name. * @param periodCount the number of periods in the moving average * calculation./*from w ww .j a va2 s . c o m*/ * @param skip the number of initial periods to skip. * * @return A collection of moving average time series. */ public static TimeSeriesCollection createMovingAverage(TimeSeriesCollection source, String suffix, int periodCount, int skip) { ParamChecks.nullNotPermitted(source, "source"); if (periodCount < 1) { throw new IllegalArgumentException("periodCount must be greater " + "than or equal to 1."); } TimeSeriesCollection result = new TimeSeriesCollection(); for (int i = 0; i < source.getSeriesCount(); i++) { TimeSeries sourceSeries = source.getSeries(i); TimeSeries maSeries = createMovingAverage(sourceSeries, sourceSeries.getKey() + suffix, periodCount, skip); result.addSeries(maSeries); } return result; }
From source file:org.jfree.chart.demo.CloneTest1.java
public CloneTest1(String s) { super(s);//www .j a va 2s. c o m lastValue = 100D; series = new TimeSeries("Random Data"); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(series); JFreeChart jfreechart = createChart(timeseriescollection); JFreeChart jfreechart1 = null; try { jfreechart1 = (JFreeChart) jfreechart.clone(); } catch (Exception exception) { exception.printStackTrace(); } XYPlot xyplot = (XYPlot) jfreechart1.getPlot(); TimeSeriesCollection timeseriescollection1 = (TimeSeriesCollection) xyplot.getDataset(); series = timeseriescollection1.getSeries(0); ChartPanel chartpanel = new ChartPanel(jfreechart1); JButton jbutton = new JButton("Add New Data Item"); jbutton.setActionCommand("ADD_DATA"); jbutton.addActionListener(this); JPanel jpanel = new JPanel(new BorderLayout()); jpanel.add(chartpanel); jpanel.add(jbutton, "South"); chartpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(jpanel); }
From source file:net.sf.jasperreports.charts.util.TimeSeriesChartHyperlinkProvider.java
@Override public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { JRPrintHyperlink printHyperlink = null; if (hasHyperlinks() && entity instanceof XYItemEntity) { XYItemEntity itemEntity = (XYItemEntity) entity; TimeSeriesCollection dataset = (TimeSeriesCollection) itemEntity.getDataset(); TimeSeries series = dataset.getSeries(itemEntity.getSeriesIndex()); Map<RegularTimePeriod, JRPrintHyperlink> serieHyperlinks = itemHyperlinks.get(series.getKey()); if (serieHyperlinks != null) { RegularTimePeriod timePeriod = series.getTimePeriod(itemEntity.getItem()); printHyperlink = serieHyperlinks.get(timePeriod); }/*from w ww .ja v a 2 s.com*/ } return printHyperlink; }
From source file:org.jfree.chart.demo.SerializationTest1.java
/** * Constructs a new demonstration application. * * @param title the frame title./*w ww .jav a 2 s . c om*/ */ public SerializationTest1(final String title) { super(title); this.series = new TimeSeries("Random Data", Millisecond.class); TimeSeriesCollection dataset = new TimeSeriesCollection(this.series); JFreeChart chart = createChart(dataset); // SERIALIZE - DESERIALIZE for testing purposes JFreeChart deserializedChart = null; try { final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); final ObjectOutput out = new ObjectOutputStream(buffer); out.writeObject(chart); out.close(); chart = null; dataset = null; this.series = null; System.gc(); final ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray())); deserializedChart = (JFreeChart) in.readObject(); in.close(); } catch (Exception e) { e.printStackTrace(); } final TimeSeriesCollection c = (TimeSeriesCollection) deserializedChart.getXYPlot().getDataset(); this.series = c.getSeries(0); // FINISHED TEST final ChartPanel chartPanel = new ChartPanel(deserializedChart); final JButton button = new JButton("Add New Data Item"); button.setActionCommand("ADD_DATA"); button.addActionListener(this); final JPanel content = new JPanel(new BorderLayout()); content.add(chartPanel); content.add(button, BorderLayout.SOUTH); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(content); }
From source file:org.mwc.debrief.sensorfusion.views.FusionPlotRenderer.java
@Override public void drawItem(final Graphics2D g2, final XYItemRendererState state, final Rectangle2D dataArea, final PlotRenderingInfo info, final XYPlot plot, final ValueAxis domainAxis, final ValueAxis rangeAxis, final XYDataset dataset, final int series, final int item, final CrosshairState crosshairState, final int pass) { // is this a new series? if (series != _seriesNum) { final TimeSeriesCollection tData = (TimeSeriesCollection) dataset; _seriesNum = series;/*ww w. java 2 s . co m*/ _series = (TacticalSeries) tData.getSeries(series); _isSensor = (_series instanceof SensorSeries); _isSelected = _myHelper.getSelectedItems().contains(_series); // and sort out the color _trackColor = null; if (_isSelected) _trackColor = Color.black; else if (!_isSensor) _trackColor = _series.getColor(); if (_trackColor == null) if (_myHelper.useOriginalColors()) _trackColor = _series.getColor(); } // store this new point _thisItem = (AttractiveDataItem) _series.getDataItem(item); // and let the parent do the plotting super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState, pass); }
From source file:com.bdb.weather.display.windplot.WindItemRenderer.java
/** * Draws the visual representation of a single data item. * * @param g2 the graphics device.// w w w . j a v a2s . c o m * @param rendererState the renderer state. * @param dataArea the area within which the data is being drawn. * @param info collects information about the drawing. * @param plot the plot (can be used to obtain standard color * information etc). * @param domainAxis the domain axis. * @param rangeAxis the range axis. * @param dataset the dataset. * @param series the series index (zero-based). * @param item the item index (zero-based). * @param crosshairState crosshair information for the plot * (<code>null</code> permitted). * @param pass the pass index. */ @Override public void drawItem(Graphics2D g2, XYItemRendererState rendererState, Rectangle2D dataArea, PlotRenderingInfo info, XYPlot plot, ValueAxis domainAxis, ValueAxis rangeAxis, XYDataset dataset, int series, int item, CrosshairState crosshairState, int pass) { // // Let the base class handle drawing the line and the shapes (passes 0 and 1). This class will handle drawing the // wind direction lines. // if (pass < 2) super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState, pass); else { if (!(dataset instanceof TimeSeriesCollection) || !showWindDirectionLines) return; if (item == 0) state.resetLastDirection(); RectangleEdge xAxisLocation = plot.getDomainAxisEdge(); RectangleEdge yAxisLocation = plot.getRangeAxisEdge(); TimeSeriesCollection collection = (TimeSeriesCollection) dataset; TimeSeries timeSeries = collection.getSeries(series); if (!(timeSeries instanceof WindSeries)) return; WindSeries windSeries = (WindSeries) timeSeries; WindSeriesDataItem windItem = windSeries.getWindDataItem(item); double speed = windItem.getWindSpeed().doubleValue(); double time = dataset.getXValue(series, item); double dir = windItem.getWindDirection().doubleValue(); if (speed > 0.0 && dir != state.getLastDirection()) { state.setLastDirection(dir); double radians = Math.toRadians(dir - 90.0); double dirXOffset = directionLineLength * Math.cos(radians); double dirYOffset = directionLineLength * Math.sin(radians); double transTime = domainAxis.valueToJava2D(time, dataArea, xAxisLocation); double transSpeed = rangeAxis.valueToJava2D(speed, dataArea, yAxisLocation); double dirX = transTime + dirXOffset; double dirY = transSpeed + dirYOffset; // update path to reflect latest point if (!Double.isNaN(transTime) && !Double.isNaN(transSpeed)) { int x1 = (int) transTime; int y1 = (int) transSpeed; int x2 = (int) dirX; int y2 = (int) dirY; PlotOrientation orientation = plot.getOrientation(); if (orientation == PlotOrientation.HORIZONTAL) { x1 = (int) transSpeed; y1 = (int) transTime; x2 = (int) dirY; y2 = (int) dirX; } g2.setPaint(windDirectionPaint); g2.setStroke(windDirectionStroke); g2.drawLine(x1, y1, x2, y2); } } } }
From source file:org.mwc.cmap.grideditor.chart.JFreeChartComposite.java
@Override public void mouseDoubleClick(final MouseEvent event) { final Rectangle scaledDataArea = getScreenDataArea(event.x, event.y); if (scaledDataArea == null) return;/* w w w. ja va 2s . c o m*/ int x = (int) ((event.x - getClientArea().x) / getScaleX()); int y = (int) ((event.y - getClientArea().y) / getScaleY()); x = (int) ((event.x - getClientArea().x)); y = (int) ((event.y - getClientArea().y)); if (this.getChartRenderingInfo() != null) { final EntityCollection entities = this.getChartRenderingInfo().getEntityCollection(); if (entities != null) { for (final Object next : entities.getEntities()) { final ChartEntity nextEntity = (ChartEntity) next; if (false == nextEntity instanceof XYItemEntity) { continue; } if (nextEntity.getArea().contains(x, y)) { // sort out it's details final XYItemEntity xyEntity = (XYItemEntity) nextEntity; int theIndex = 0; if (xyEntity.getDataset() instanceof XYSeriesCollection) { theIndex = xyEntity.getItem(); // BackedChartItem backedChartItem; // XYSeries series = ((XYSeriesCollection) xyEntity.getDataset()) // .getSeries(seriesKey); // XYDataItem dataItem = series.getDataItem(xyEntity.getItem()); // if (dataItem instanceof BackedChartItem) // { // backedChartItem = (BackedChartItem) dataItem; // } } else if (xyEntity.getDataset() instanceof TimeSeriesCollection) { final TimeSeriesCollection theDataset = (TimeSeriesCollection) xyEntity.getDataset(); final TimeSeries theSeries = theDataset.getSeries(xyEntity.getSeriesIndex()); theIndex = xyEntity.getItem(); final int itemCount = theSeries.getItemCount(); // the items are in reverse order. reverse the index theIndex = itemCount - (theIndex + 1); // TimeSeries series = ((TimeSeriesCollection) // xyEntity.getDataset()) // .getSeries(seriesKey); // TimeSeriesDataItem dataItem = series // .getDataItem(xyEntity.getItem()); // if (dataItem instanceof BackedChartItem) // { // backedChartItem = (BackedChartItem) dataItem; // } } // clear the selection, as long as ctrl isn't selected if ((event.stateMask & SWT.CTRL) != 0) { // control is selected, so we don't want to clear the selection } else if ((event.stateMask & SWT.SHIFT) != 0) { // shift is selected, so we want to extend the selection } else { // we're not extending the selection, clear it, _dataGrid.getTableViewer().getTable().deselectAll(); } // try to select it _dataGrid.getTableViewer().getTable().select(theIndex); // and make sure it's visible _dataGrid.getTableViewer().getTable().showSelection(); // and tell the action buttons what's happened _dataGrid.getActionContext().setSelection(_dataGrid.getTableViewer().getSelection()); break; } } } } }
From source file:tools.descartes.bungee.chart.ChartGenerator.java
private static XYPlot createAllocationPlot(final TimeSeriesCollection dataset) { XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(false); final NumberAxis rangeAxis = new NumberAxis("Resource Amount"); rangeAxis.setAutoRangeIncludesZero(true); //rangeAxis.setTickUnit(new NumberTickUnit(1)); double lower = Math.min(1, dataset.getRangeBounds(false).getLowerBound()) - 0.2; double upper = Math.max(2, dataset.getRangeBounds(false).getUpperBound()) + 0.2; rangeAxis.setRange(lower, upper);// w w w .ja va 2 s .c o m final XYPlot allocationPlot = new XYPlot(dataset, null, rangeAxis, renderer); allocationPlot.setSeriesRenderingOrder(SeriesRenderingOrder.REVERSE); for (int i = 0; i < dataset.getSeriesCount(); i++) { TimeSeries series = dataset.getSeries(i); //addEndSeriesItem(lastDate, series); String description = series.getKey().toString(); renderer.setSeriesStroke(i, new BasicStroke(STROKE_WIDTH)); if (description.equals(AllocationSeries.CATEGORY.DEMAND.toString())) { renderer.setSeriesShapesVisible(i, false); renderer.setSeriesPaint(i, Color.RED); } else if (description.equals(SupplySeries.TYPE.VM_SCHEDULED.toString())) { renderer.setSeriesPaint(i, VARIANT_C_COLOR); } else if (description.equals(SupplySeries.TYPE.VM_COMPLETED.toString())) { renderer.setSeriesPaint(i, VARIANT_B_COLOR); } else if (description.equals(SupplySeries.TYPE.LB_RULE_ADAPTION.toString())) { if (dataset.getSeriesCount() != 2) { renderer.setSeriesPaint(i, VARIANT_A_COLOR); } else { renderer.setSeriesPaint(i, Color.BLUE); } } else if (description.equals(SupplySeries.TYPE.MONITORED.toString())) { if (dataset.getSeriesCount() != 2) { renderer.setSeriesPaint(i, VARIANT_D_COLOR); } else { renderer.setSeriesPaint(i, Color.BLUE); } } else { renderer.setSeriesPaint(i, colorForConfig(description)); } } return allocationPlot; }
From source file:org.adempiere.webui.editor.WChartEditor.java
private void render(JFreeChart chart) { ChartRenderingInfo info = new ChartRenderingInfo(); int width = 400; int height = chartModel.getWinHeight(); BufferedImage bi = chart.createBufferedImage(width, height, BufferedImage.TRANSLUCENT, info); try {/* w ww.ja v a 2 s . c o m*/ byte[] bytes = EncoderUtil.encode(bi, ImageFormat.PNG, true); AImage image = new AImage("", bytes); Imagemap myImage = new Imagemap(); Panel panel = getComponent(); myImage.setContent(image); if (panel.getPanelchildren() != null) { panel.getPanelchildren().getChildren().clear(); panel.getPanelchildren().appendChild(myImage); } else { Panelchildren pc = new Panelchildren(); panel.appendChild(pc); pc.appendChild(myImage); } int count = 0; for (Iterator<?> it = info.getEntityCollection().getEntities().iterator(); it.hasNext();) { ChartEntity entity = (ChartEntity) it.next(); String key = null; String seriesName = null; if (entity instanceof CategoryItemEntity) { CategoryItemEntity item = ((CategoryItemEntity) entity); Comparable<?> colKey = item.getColumnKey(); Comparable<?> rowKey = item.getRowKey(); if (colKey != null && rowKey != null) { key = colKey.toString(); seriesName = rowKey.toString(); } } else if (entity instanceof PieSectionEntity) { Comparable<?> sectionKey = ((PieSectionEntity) entity).getSectionKey(); if (sectionKey != null) { key = sectionKey.toString(); } } if (entity instanceof XYItemEntity) { XYItemEntity item = ((XYItemEntity) entity); if (item.getDataset() instanceof TimeSeriesCollection) { TimeSeriesCollection data = (TimeSeriesCollection) item.getDataset(); TimeSeries series = data.getSeries(item.getSeriesIndex()); TimeSeriesDataItem dataitem = series.getDataItem(item.getItem()); seriesName = series.getKey().toString(); key = dataitem.getPeriod().toString(); } } if (key == null) continue; Area area = new Area(); myImage.appendChild(area); area.setCoords(entity.getShapeCoords()); area.setShape(entity.getShapeType()); area.setTooltiptext(entity.getToolTipText()); area.setId(count + "_WG__" + seriesName + "__" + key); count++; } myImage.addEventListener(Events.ON_CLICK, new EventListener() { public void onEvent(Event event) throws Exception { MouseEvent me = (MouseEvent) event; String areaId = me.getArea(); if (areaId != null) { String[] strs = areaId.split("__"); if (strs.length == 3) { chartMouseClicked(strs[2], strs[1]); } } } }); } catch (Exception e) { log.log(Level.SEVERE, "", e); } }
From source file:org.amanzi.awe.charts.ui.ChartsView.java
@Override public void chartMouseClicked(final ChartMouseEvent event) { if (event == null) { return;/*from w w w. j a va2s .c o m*/ } Collection<String> groups = null; long startDate = Long.MIN_VALUE; long endDate = Long.MAX_VALUE; String cellName = StringUtils.EMPTY; if (event.getEntity() instanceof CategoryItemEntity) { CategoryItemEntity entity = (CategoryItemEntity) event.getEntity(); IColumn period = (IColumn) entity.getColumnKey(); ICategoryRow column = period.getItemByName((String) entity.getRowKey()); groups = column.getGroupsNames(); startDate = period.getStartDate(); endDate = period.getEndDate(); cellName = column.getName(); } else if (event.getEntity() instanceof XYItemEntity) { XYItemEntity entity = (XYItemEntity) event.getEntity(); TimeSeriesCollection dataset = (TimeSeriesCollection) entity.getDataset(); TimeSeries ts = dataset.getSeries(entity.getSeriesIndex()); ITimeRow row = (ITimeRow) ts.getKey(); RegularTimePeriod period = ts.getTimePeriod(entity.getItem()); startDate = period.getStart().getTime(); endDate = container.getPeriod().addPeriod(startDate); groups = row.getGroupsForTime(startDate); cellName = row.getName(); } else { return; } AWEEventManager.getManager().fireShowInViewEvent(model, new StatisticsFilter(container.getPeriod(), startDate, endDate, groups, cellName), this); }