List of usage examples for org.jfree.chart.title LegendTitle LegendTitle
public LegendTitle(LegendItemSource source)
From source file:no.met.jtimeseries.marinogram.MarinogramTemperaturePlot.java
private XYPlot createPlot(TimeZone timezone, boolean plotAirTemp, boolean plotWaterTemp, boolean plotDewpointTemp) throws ParseException { Date startTime = null;// w w w . j av a 2s .com NumberPhenomenon aTemperature = null; NumberPhenomenon wTemperature = null; NumberPhenomenon dTemperature = null; // default setting ChartPlotter plotter = new ChartPlotter(); plotter.setHeight(this.getHeight()); plotter.setWidth(this.getWidth()); plotter.setPlotDefaultProperties("", ""); double minValue = 100; double maxValue = -100; int plotIndex = 0; if (plotAirTemp) { aTemperature = getLocationForecastDataModel().getPhenomenen(PhenomenonName.AirTemperature.toString(), NumberPhenomenon.class); minValue = aTemperature.getMinValue() < minValue ? aTemperature.getMinValue() : minValue; maxValue = aTemperature.getMaxValue() > maxValue ? aTemperature.getMaxValue() : maxValue; startTime = aTemperature.getTime().get(0); plotTemperature(plotter, aTemperature, new BasicStroke(2.0f), Color.RED, messages.getString("label.air"), true); plotter.getPlot().getRenderer(plotIndex).setSeriesVisibleInLegend(0, true); plotter.getPlot().getRenderer(plotIndex).setSeriesVisibleInLegend(1, true); plotIndex++; } if (plotWaterTemp) { wTemperature = getOceanForecastDataModel().getPhenomenen(PhenomenonName.seaTemperature.toString(), NumberPhenomenon.class); // only plot water temperature if it is availbe for this location if (wTemperature != null) { minValue = wTemperature.getMinValue() < minValue ? wTemperature.getMinValue() : minValue; maxValue = wTemperature.getMaxValue() > maxValue ? wTemperature.getMaxValue() : maxValue; startTime = wTemperature.getTime().get(0); BasicStroke dottedStroke = new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, new float[] { 2.0f, 6.0f }, 0.0f); plotTemperature(plotter, wTemperature, dottedStroke, Color.RED, messages.getString("label.water"), true); plotter.getPlot().getRenderer(plotIndex++).setSeriesVisibleInLegend(0, true); } } if (plotDewpointTemp) { dTemperature = getLocationForecastDataModel() .getPhenomenen(PhenomenonName.dewPointTemperature.toString(), NumberPhenomenon.class); minValue = dTemperature.getMinValue() < minValue ? dTemperature.getMinValue() : minValue; maxValue = dTemperature.getMaxValue() > maxValue ? dTemperature.getMaxValue() : maxValue; startTime = dTemperature.getTime().get(0); plotTemperature(plotter, dTemperature, new BasicStroke(2.0f), Color.ORANGE, messages.getString("label.dewpoint"), false); plotter.getPlot().getRenderer(plotIndex).setSeriesVisibleInLegend(0, true); } double tick = (maxValue - minValue) / 3.5; tick = Math.ceil(tick); double lowBound = Math.floor(minValue / (tick)) * (tick); lowBound = lowBound - tick / 2; double upperBound = lowBound + tick * 7; // set range axis NumberAxis numberAxis = new NumberAxis(); numberAxis.setLabelPaint(Color.RED); numberAxis.setTickLabelPaint(Color.RED); numberAxis.setLabel(messages.getString("parameter.temperature") + " (\u00B0 C)"); numberAxis.setTickUnit(new NumberTickUnit(tick)); numberAxis.setLowerBound(lowBound); numberAxis.setUpperBound(upperBound); //Set left axis and right axis plotter.getPlot().setRangeAxis(0, numberAxis); plotter.getPlot().setRangeAxis(1, numberAxis); //Set the third axis and hide the third axis if (plotAirTemp && plotWaterTemp && plotDewpointTemp) { NumberAxis numberAxis2 = new NumberAxis(); numberAxis2.setTickUnit(new NumberTickUnit(tick)); numberAxis2.setLowerBound(lowBound); numberAxis2.setUpperBound(upperBound); plotter.getPlot().setRangeAxis(2, numberAxis2); plotter.getPlot().getRangeAxis(2).setVisible(false); } //Show legend at the top right position of the plot LegendTitle lt = new LegendTitle(plotter.getPlot()); lt.setItemFont(new Font("Dialog", Font.PLAIN, 9)); lt.setBackgroundPaint(new Color(255, 255, 255, 100)); lt.setFrame(new BlockBorder(Color.white)); lt.setPosition(RectangleEdge.TOP); XYTitleAnnotation ta = new XYTitleAnnotation(0.99, 0.95, lt, RectangleAnchor.TOP_RIGHT); plotter.getPlot().addAnnotation(ta); // set domain range after (must) plot all the data plotter.addHourBasedDomainGridLines(); // add markers plotter.addDomainMarkers(getShortTermTime(startTime), timezone, locale); Date minDate = getShortTermTime(startTime).get(0); Date maxDate = getShortTermTime(startTime).get(getShortTermTime(startTime).size() - 1); plotter.setDomainRange(minDate, maxDate); plotter.setDomainDateFormat(timezone, "HH"); plotter.getPlot().setOutlineVisible(true); // invisible the domain i.e, x axis plotter.getPlot().getDomainAxis().setTickLabelsVisible(false); return plotter.getPlot(); }
From source file:daylightchart.daylightchart.chart.DaylightChart.java
private void createLegend(final Options options, final Font font) { removeLegend();//from ww w. j a va 2 s .c o m if (options.isShowChartLegend()) { final LegendItemSource legendItemSource = new DaylightChartLegendItemSource(options); final LegendTitle legendTitle = new LegendTitle(legendItemSource); legendTitle.setItemFont(font); legendTitle.setPosition(RectangleEdge.BOTTOM); addLegend(legendTitle); } }
From source file:org.jfree.chart.demo.ThumbnailDemo1.java
private static JFreeChart createChart3(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createStackedBarChart("Public Opinion : Torture of Prisoners", "Country", "%", categorydataset, PlotOrientation.HORIZONTAL, false, true, false); jfreechart.getTitle().setMargin(2D, 0.0D, 0.0D, 0.0D); TextTitle texttitle = new TextTitle("Source: http://news.bbc.co.uk/1/hi/world/6063386.stm", new Font("Dialog", 0, 11)); texttitle.setPosition(RectangleEdge.BOTTOM); texttitle.setHorizontalAlignment(HorizontalAlignment.RIGHT); texttitle.setMargin(0.0D, 0.0D, 4D, 4D); jfreechart.addSubtitle(texttitle);/* w ww .ja va 2s .co m*/ TextTitle texttitle1 = new TextTitle("(*) Across 27,000 respondents in 25 countries", new Font("Dialog", 0, 11)); texttitle1.setPosition(RectangleEdge.BOTTOM); texttitle1.setHorizontalAlignment(HorizontalAlignment.RIGHT); texttitle1.setMargin(4D, 0.0D, 2D, 4D); jfreechart.addSubtitle(texttitle1); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); LegendItemCollection legenditemcollection = new LegendItemCollection(); legenditemcollection.add(new LegendItem("Against all torture", null, null, null, new java.awt.geom.Rectangle2D.Double(-6D, -3D, 12D, 6D), Color.green)); legenditemcollection.add(new LegendItem("Some degree permissible", null, null, null, new java.awt.geom.Rectangle2D.Double(-6D, -3D, 12D, 6D), Color.red)); categoryplot.setFixedLegendItems(legenditemcollection); categoryplot.setInsets(new RectangleInsets(5D, 5D, 5D, 20D)); LegendTitle legendtitle = new LegendTitle(categoryplot); legendtitle.setPosition(RectangleEdge.BOTTOM); jfreechart.addSubtitle(legendtitle); categoryplot.setBackgroundPaint(Color.lightGray); categoryplot.setDomainGridlinePaint(Color.white); categoryplot.setDomainGridlinesVisible(true); categoryplot.setRangeGridlinePaint(Color.white); NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); numberaxis.setUpperMargin(0.0D); BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer(); barrenderer.setDrawBarOutline(false); GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, new Color(0, 64, 0)); Color color = new Color(0, 0, 0, 0); GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, new Color(64, 0, 0)); barrenderer.setSeriesPaint(0, gradientpaint); barrenderer.setSeriesPaint(1, color); barrenderer.setSeriesPaint(2, gradientpaint1); return jfreechart; }
From source file:org.emftrace.quarc.ui.views.RatioView.java
/** * create a SpiderChart //w ww . j a v a 2s .co m * @param dataset the dataset for the chart * @param weighted include weights? * @return the created SpiderChart */ private JFreeChart createSpiderChart(DefaultCategoryDataset dataset, boolean weighted) { SpiderWebPlot plot = new SpiderWebPlot(dataset); plot.setMaxValue(200.0f); plot.setStartAngle(54); plot.setInteriorGap(0.40); plot.setToolTipGenerator(new CategoryToolTipGenerator() { @Override public String generateToolTip(CategoryDataset dataset, int section, int index) { Float ratingValue = (Float) dataset.getValue(section, index); if (ratingValue == null) ratingValue = 0.0f; else ratingValue -= 100.0f; return String.valueOf("(" + dataset.getRowKey(section) + "," + dataset.getColumnKey(index) + ") = " + String.format("%.2f", ratingValue)); } }); plot.setNoDataMessage("No data to display"); String titleStr = "ratings of selected elements"; if (weighted) titleStr = "weighted " + titleStr; JFreeChart chart = new JFreeChart(titleStr, TextTitle.DEFAULT_FONT, plot, false); LegendTitle legend = new LegendTitle(plot); legend.setPosition(RectangleEdge.BOTTOM); chart.addSubtitle(legend); ChartUtilities.applyCurrentTheme(chart); return chart; }
From source file:org.martus.client.swingui.actions.ActionMenuCharts.java
private LegendTitle createLegend(JFreeChart chart) { LegendTitle legend = new LegendTitle(chart.getPlot()); legend.setMargin(new RectangleInsets(1.0, 1.0, 1.0, 1.0)); legend.setFrame(new LineBorder()); legend.setBackgroundPaint(Color.white); legend.setPosition(RectangleEdge.BOTTOM); legend.addChangeListener(chart);//from w w w . ja v a 2 s . com legend.setItemFont(FontHandler.getDefaultFont()); return legend; }
From source file:MWC.GUI.JFreeChart.NewFormattedJFreeChart.java
public void setShowLegend(final boolean showLegend) { if (showLegend) { if (!isShowLegend()) { LegendTitle legend = new LegendTitle(getPlot()); legend.setMargin(new RectangleInsets(1.0, 1.0, 1.0, 1.0)); legend.setFrame(new LineBorder()); legend.setBackgroundPaint(Color.white); legend.setPosition(RectangleEdge.BOTTOM); addLegend(legend);/*from w w w . j av a 2s .co m*/ } } else { if (isShowLegend()) { removeLegend(); } } this.fireChartChanged(); }
From source file:edu.jhuapl.graphs.jfreechart.JFreeChartTimeSeriesGraphSource.java
/** * Initializes the graph. This method generates the backing {@link JFreeChart} from the time series and graph * parameter data.// ww w . ja va2 s .co m * * @throws GraphException if the initialization fails */ public void initialize() throws GraphException { String title = getParam(GraphSource.GRAPH_TITLE, String.class, DEFAULT_TITLE); String xLabel = getParam(GraphSource.GRAPH_X_LABEL, String.class, DEFAULT_DOMAIN_LABEL); String yLabel = getParam(GraphSource.GRAPH_Y_LABEL, String.class, DEFAULT_RANGE_LABEL); Shape graphShape = getParam(GraphSource.GRAPH_SHAPE, Shape.class, DEFAULT_GRAPH_SHAPE); Paint graphColor = getParam(GraphSource.GRAPH_COLOR, Paint.class, DEFAULT_GRAPH_COLOR); boolean legend = getParam(GraphSource.GRAPH_LEGEND, Boolean.class, DEFAULT_GRAPH_LEGEND); boolean graphToolTip = getParam(GraphSource.GRAPH_TOOL_TIP, Boolean.class, DEFAULT_GRAPH_TOOL_TIP); Stroke graphStroke = getParam(GraphSource.GRAPH_STROKE, Stroke.class, DEFAULT_GRAPH_STROKE); Font titleFont = getParam(GraphSource.GRAPH_FONT, Font.class, DEFAULT_GRAPH_TITLE_FONT); boolean graphBorder = getParam(GraphSource.GRAPH_BORDER, Boolean.class, DEFAULT_GRAPH_BORDER); boolean legendBorder = getParam(GraphSource.LEGEND_BORDER, Boolean.class, DEFAULT_LEGEND_BORDER); Double offset = getParam(GraphSource.AXIS_OFFSET, Double.class, DEFAULT_AXIS_OFFSET); checkSeriesType(data); @SuppressWarnings("unchecked") List<? extends TimeSeriesInterface> timeData = (List<? extends TimeSeriesInterface>) data; TimeSeriesCollection dataset = new TimeSeriesCollection(); int seriesCount = 1; for (TimeSeriesInterface series : timeData) { dataset.addSeries(buildTimeSeries(series, seriesCount)); seriesCount += 1; } // actually create the chart this.chart = ChartFactory.createTimeSeriesChart(title, xLabel, yLabel, dataset, false, graphToolTip, false); // start customizing it Paint backgroundColor = getParam(GraphSource.BACKGROUND_COLOR, Paint.class, DEFAULT_BACKGROUND_COLOR); Paint plotColor = getParam(JFreeChartTimeSeriesGraphSource.PLOT_COLOR, Paint.class, backgroundColor); Paint graphDomainGridlinePaint = getParam(GraphSource.GRAPH_DOMAIN_GRIDLINE_PAINT, Paint.class, backgroundColor); Paint graphRangeGridlinePaint = getParam(GraphSource.GRAPH_RANGE_GRIDLINE_PAINT, Paint.class, backgroundColor); this.chart.setBackgroundPaint(backgroundColor); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(plotColor); plot.setAxisOffset(new RectangleInsets(offset, offset, offset, offset)); plot.setDomainGridlinePaint(graphDomainGridlinePaint); plot.setRangeGridlinePaint(graphRangeGridlinePaint); if (graphBorder) { } else { plot.setOutlinePaint(null); } //Use a TextTitle to change the font of the graph title TextTitle title1 = new TextTitle(); title1.setText(title); title1.setFont(titleFont); chart.setTitle(title1); //Makes a wrapper for the legend to remove the border around it if (legend) { LegendTitle legend1 = new LegendTitle(chart.getPlot()); BlockContainer wrapper = new BlockContainer(new BorderArrangement()); if (legendBorder) { wrapper.setFrame(new BlockBorder(1, 1, 1, 1)); } else { wrapper.setFrame(new BlockBorder(0, 0, 0, 0)); } BlockContainer items = legend1.getItemContainer(); items.setPadding(2, 10, 5, 2); wrapper.add(items); legend1.setWrapper(wrapper); legend1.setPosition(RectangleEdge.BOTTOM); legend1.setHorizontalAlignment(HorizontalAlignment.CENTER); if (params.get(GraphSource.LEGEND_FONT) instanceof Font) { legend1.setItemFont(((Font) params.get(GraphSource.LEGEND_FONT))); } chart.addSubtitle(legend1); } boolean include0 = getParam(GraphSource.GRAPH_RANGE_INCLUDE_0, Boolean.class, true); NumberAxis numAxis = (NumberAxis) plot.getRangeAxis(); double rangeLower = getParam(GraphSource.GRAPH_RANGE_LOWER_BOUND, Double.class, numAxis.getLowerBound()); double rangeUpper = getParam(GraphSource.GRAPH_RANGE_UPPER_BOUND, Double.class, numAxis.getUpperBound()); boolean graphRangeIntegerTick = getParam(GraphSource.GRAPH_RANGE_INTEGER_TICK, Boolean.class, false); boolean graphRangeMinorTickVisible = getParam(GraphSource.GRAPH_RANGE_MINOR_TICK_VISIBLE, Boolean.class, true); if (include0) { rangeLower = 0; } numAxis.setRange(rangeLower, rangeUpper); if (graphRangeIntegerTick) { numAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); } numAxis.setMinorTickMarksVisible(graphRangeMinorTickVisible); setupFont(numAxis, GraphSource.GRAPH_Y_AXIS_FONT); if (params.get(GraphSource.GRAPH_Y_AXIS_LABEL_FONT) instanceof Font) { numAxis.setLabelFont(((Font) params.get(GraphSource.GRAPH_Y_AXIS_LABEL_FONT))); } TimeResolution minimumResolution = getMinimumResolution(timeData); DateFormat dateFormat = getParam(GraphSource.GRAPH_DATE_FORMATTER, DateFormat.class, new DefaultDateFormatFactory().getFormat(minimumResolution)); if (params.get(DATE_AXIS) instanceof DateAxis) { DateAxis dateAxis = (DateAxis) params.get(DATE_AXIS); dateAxis.setLabel(xLabel); plot.setDomainAxis(dateAxis); } DateAxis dateAxis = ((DateAxis) plot.getDomainAxis()); dateAxis.setDateFormatOverride(dateFormat); if (params.get(GraphSource.GRAPH_X_AXIS_LABEL_FONT) instanceof Font) { dateAxis.setLabelFont(((Font) params.get(GraphSource.GRAPH_X_AXIS_LABEL_FONT))); } int minTick = getParam(GraphSource.GRAPH_MIN_DOMAIN_TICK, Integer.class, 1); if (minTick <= 0) { minTick = 1; } dateAxis.setTickUnit(getDateTickUnit(minimumResolution, minTick), false, false); //dateAxis.setMinorTickMarksVisible(true); //dateAxis.setMinorTickCount(7); dateAxis.setMinorTickMarkOutsideLength(2); Integer minorTick = getParam(GraphSource.GRAPH_MINOR_TICKS, Integer.class, null); if (minorTick != null) { int minorVal = minorTick; if (minorVal > 0) { dateAxis.setMinorTickCount(minorVal); } } setupFont(dateAxis, GraphSource.GRAPH_X_AXIS_FONT); //double lowerMargin = getParam(DOMAIN_AXIS_LOWER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_LOWER_MARGIN); double lowerMargin = getParam(DOMAIN_AXIS_LOWER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_LOWER_MARGIN); dateAxis.setLowerMargin(lowerMargin); //double upperMargin = getParam(DOMAIN_AXIS_UPPER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_UPPER_MARGIN); double upperMargin = getParam(DOMAIN_AXIS_UPPER_MARGIN, Double.class, DEFAULT_DOMAIN_AXIS_UPPER_MARGIN); dateAxis.setUpperMargin(upperMargin); Date domainLower = getParam(GraphSource.GRAPH_DOMAIN_LOWER_BOUND, Date.class, dateAxis.getMinimumDate()); Date domainUpper = getParam(GraphSource.GRAPH_DOMAIN_UPPER_BOUND, Date.class, dateAxis.getMaximumDate()); dateAxis.setRange(domainLower, domainUpper); // depending on the domain axis range, display either 1 tick per day, week, month or year TickUnits standardUnits = new TickUnits(); standardUnits.add(new DateTickUnit(DateTickUnitType.DAY, 1)); standardUnits.add(new DateTickUnit(DateTickUnitType.DAY, 7)); standardUnits.add(new DateTickUnit(DateTickUnitType.MONTH, 1)); standardUnits.add(new DateTickUnit(DateTickUnitType.YEAR, 1)); dateAxis.setStandardTickUnits(standardUnits); TimeSeriesRenderer renderer = new TimeSeriesRenderer(dataset); setupRenderer(renderer, graphColor, graphShape, graphStroke); renderer.setBaseFillPaint(Color.BLACK); renderer.setSeriesOutlinePaint(0, Color.WHITE); //renderer.setUseOutlinePaint(true); plot.setRenderer(renderer); this.initialized = true; }
From source file:com.rapidminer.gui.plotter.charts.ParallelPlotter2.java
@Override public void updatePlotter() { prepareData();/*ww w .j a v a 2 s. com*/ JFreeChart chart = createChart(this.dataset); // set the background color for the chart... chart.setBackgroundPaint(Color.white); // general plot settings XYPlot plot = chart.getXYPlot(); plot.setDomainGridlinePaint(Color.LIGHT_GRAY); plot.setRangeGridlinePaint(Color.LIGHT_GRAY); // domain axis SymbolAxis axis = null; if (this.dataTable.isSupportingColumnWeights()) { List<Double> weightList = new LinkedList<>(); for (int column = 0; column < dataTable.getNumberOfColumns(); column++) { if ((!dataTable.isSpecial(column)) && (column != colorColumn)) { weightList.add(this.dataTable.getColumnWeight(column)); } } double[] weights = new double[weightList.size()]; int index = 0; for (Double d : weightList) { weights[index++] = d; } axis = new WeightBasedSymbolAxis(null, domainAxisMap, weights); } else { axis = new SymbolAxis(null, domainAxisMap); } axis.setTickLabelFont(LABEL_FONT); axis.setLabelFont(LABEL_FONT_BOLD); // rotate labels if (isLabelRotating()) { axis.setTickLabelsVisible(true); axis.setVerticalTickLabels(true); } chart.getXYPlot().setDomainAxis(axis); // renderer final ColorizedLineAndShapeRenderer renderer = new ColorizedLineAndShapeRenderer(this.colorMap); plot.setRenderer(renderer); // legend settings if ((colorColumn >= 0) && (this.dataTable.isNominal(colorColumn))) { final LegendItemCollection legendItemCollection = new LegendItemCollection(); for (int i = 0; i < this.dataTable.getNumberOfValues(colorColumn); i++) { legendItemCollection.add(new LegendItem(this.dataTable.mapIndex(colorColumn, i), null, null, null, new Rectangle2D.Double(0, 0, 7, 7), getColorProvider() .getPointColor(i / (double) (this.dataTable.getNumberOfValues(colorColumn) - 1)), new BasicStroke(0.75f), Color.GRAY)); } chart.addLegend(new LegendTitle(new LegendItemSource() { @Override public LegendItemCollection getLegendItems() { return legendItemCollection; } })); LegendTitle legend = chart.getLegend(); if (legend != null) { legend.setPosition(RectangleEdge.TOP); legend.setFrame(BlockBorder.NONE); legend.setHorizontalAlignment(HorizontalAlignment.LEFT); legend.setItemFont(LABEL_FONT); } } else if (colorColumn >= 0) { chart.addLegend(new LegendTitle(new LegendItemSource() { @Override public LegendItemCollection getLegendItems() { LegendItemCollection itemCollection = new LegendItemCollection(); itemCollection.add(new LegendItem("Dummy")); return itemCollection; } }) { private static final long serialVersionUID = 1288380309936848376L; @Override public Object draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, java.lang.Object params) { if (dataTable.isDate(colorColumn) || dataTable.isTime(colorColumn) || dataTable.isDateTime(colorColumn)) { drawSimpleDateLegend(g2, (int) (area.getCenterX() - 170), (int) (area.getCenterY() + 7), dataTable, colorColumn, renderer.getMinColorValue(), renderer.getMaxColorValue()); return new BlockResult(); } else { final String minColorString = Tools.formatNumber(renderer.getMinColorValue()); final String maxColorString = Tools.formatNumber(renderer.getMaxColorValue()); drawSimpleNumericalLegend(g2, (int) (area.getCenterX() - 90), (int) (area.getCenterY() + 7), dataTable.getColumnName(colorColumn), minColorString, maxColorString); return new BlockResult(); } } @Override public void draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area) { draw(g2, area, null); } }); } // chart panel if (panel instanceof AbstractChartPanel) { panel.setChart(chart); } else { panel = new AbstractChartPanel(chart, getWidth(), getHeight() - MARGIN); final ChartPanelShiftController controller = new ChartPanelShiftController(panel); panel.addMouseListener(controller); panel.addMouseMotionListener(controller); } // ATTENTION: WITHOUT THIS WE GET SEVERE MEMORY LEAKS!!! panel.getChartRenderingInfo().setEntityCollection(null); }
From source file:iDynoOptimizer.MOEAFramework26.src.org.moeaframework.analysis.diagnostics.LinePlot.java
@Override protected void update() { XYDataset dataset = null;/*from w w w . j av a 2 s . c o m*/ //generate the plot data if (controller.getShowIndividualTraces()) { dataset = new DefaultTableXYDataset(); for (ResultKey key : frame.getSelectedResults()) { generateIndividualSeries(key, (DefaultTableXYDataset) dataset); } } else { dataset = new YIntervalSeriesCollection(); for (ResultKey key : frame.getSelectedResults()) { generateQuantileSeries(key, (YIntervalSeriesCollection) dataset); } } //create the chart JFreeChart chart = ChartFactory.createXYLineChart(metric, localization.getString("text.NFE"), localization.getString("text.value"), dataset, PlotOrientation.VERTICAL, false, true, false); final XYPlot plot = chart.getXYPlot(); //setup the series renderer if (controller.getShowIndividualTraces()) { XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false); for (int i = 0; i < dataset.getSeriesCount(); i++) { Paint paint = frame.getPaintHelper().get(dataset.getSeriesKey(i)); renderer.setSeriesStroke(i, new BasicStroke(1f, 1, 1)); renderer.setSeriesPaint(i, paint); } plot.setRenderer(renderer); } else { DeviationRenderer renderer = new DeviationRenderer(true, false); for (int i = 0; i < dataset.getSeriesCount(); i++) { Paint paint = frame.getPaintHelper().get(dataset.getSeriesKey(i)); renderer.setSeriesStroke(i, new BasicStroke(3f, 1, 1)); renderer.setSeriesPaint(i, paint); renderer.setSeriesFillPaint(i, paint); } plot.setRenderer(renderer); } //create the legend final LegendItemCollection items = plot.getLegendItems(); Iterator<?> iterator = items.iterator(); Set<ResultKey> uniqueKeys = new HashSet<ResultKey>(); while (iterator.hasNext()) { LegendItem item = (LegendItem) iterator.next(); if (uniqueKeys.contains(item.getSeriesKey())) { iterator.remove(); } else { uniqueKeys.add((ResultKey) item.getSeriesKey()); } } LegendItemSource source = new LegendItemSource() { @Override public LegendItemCollection getLegendItems() { return items; } }; LegendTitle legend = new LegendTitle(source); legend.setMargin(new RectangleInsets(1.0, 1.0, 1.0, 1.0)); legend.setFrame(new LineBorder()); legend.setBackgroundPaint(Color.WHITE); legend.setPosition(RectangleEdge.BOTTOM); chart.addLegend(legend); //scale the axes final NumberAxis domainAxis = new NumberAxis(); domainAxis.setAutoRange(true); plot.setDomainAxis(domainAxis); //add overlay if (controller.getShowLastTrace() && !controller.getShowIndividualTraces() && (controller.getLastAccumulator() != null) && controller.getLastAccumulator().keySet().contains(metric)) { DefaultTableXYDataset dataset2 = new DefaultTableXYDataset(); XYSeries series = new XYSeries(localization.getString("text.last"), false, false); for (int i = 0; i < controller.getLastAccumulator().size(metric); i++) { series.add((Number) controller.getLastAccumulator().get("NFE", i), (Number) controller.getLastAccumulator().get(metric, i)); } dataset2.addSeries(series); XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer(true, false); renderer2.setSeriesStroke(0, new BasicStroke(1f, 1, 1)); renderer2.setSeriesPaint(0, Color.BLACK); plot.setDataset(1, dataset2); plot.setRenderer(1, renderer2); plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); } //update the chart in the GUI removeAll(); add(new ChartPanel(chart), BorderLayout.CENTER); revalidate(); repaint(); }
From source file:wsattacker.plugin.dos.dosExtension.chart.ChartObject.java
public JFreeChart createOverlaidChart() { // ---------------------------- // Data and X-Y-Axis - Response Time Testprobes // - Y-Achse 0 final DateAxis yAxis = new DateAxis("Time"); yAxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE); // - X-Achse 0 final NumberAxis xAxis0 = new NumberAxis("Response Time in ms"); xAxis0.setStandardTickUnits(NumberAxis.createStandardTickUnits()); // xAxis0.setTickUnit( new NumberTickUnit(1) ); // - dataset//www . ja v a2s.c o m // - renderer final XYDataset dataResponseTimeProbes = createDatasetResponseTime("testprobe"); final XYLineAndShapeRenderer rendererResponseTimeProbes = new XYLineAndShapeRenderer(); // StandardXYItemRenderer(); // -> // should // not // be // used rendererResponseTimeProbes.setSeriesPaint(0, Color.blue); rendererResponseTimeProbes.setSeriesShape(0, new Ellipse2D.Double(-1.5, -1.5, 3.0, 3.0)); rendererResponseTimeProbes.setSeriesLinesVisible(0, true); rendererResponseTimeProbes.setSeriesShapesVisible(0, true); rendererResponseTimeProbes.setUseOutlinePaint(false); rendererResponseTimeProbes.setSeriesOutlinePaint(0, Color.black); rendererResponseTimeProbes.setUseFillPaint(true); rendererResponseTimeProbes.setSeriesFillPaint(0, Color.blue); // ---------------------------- // NEW XYPlot (new "Data and X-Y-Axis" from above added as default) final XYPlot plot = new XYPlot(dataResponseTimeProbes, yAxis, xAxis0, rendererResponseTimeProbes); // ---------------------------- // Data and Axis 1 - Response time UNtampered // - Dataset // - Renderer. // - Dataset zu X-Axis 0 mappen final XYDataset dataResponseTimeUntampered = createDatasetResponseTime("untampered"); final XYLineAndShapeRenderer rendererResponseTimeUntampered = new XYLineAndShapeRenderer(); // StandardXYItemRenderer(); // -> // should // not // be // used rendererResponseTimeUntampered.setSeriesPaint(0, new Color(0, 161, 4)); rendererResponseTimeUntampered.setSeriesShape(0, new Ellipse2D.Double(-4, -4, 8.0, 8.0)); rendererResponseTimeUntampered.setUseFillPaint(true); rendererResponseTimeUntampered.setSeriesFillPaint(0, Color.white); rendererResponseTimeUntampered.setUseOutlinePaint(false); rendererResponseTimeUntampered.setSeriesOutlinePaint(0, Color.black); rendererResponseTimeUntampered.setSeriesToolTipGenerator(0, new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00"))); plot.setDataset(2, dataResponseTimeUntampered); plot.setRenderer(2, rendererResponseTimeUntampered); // plot.mapDatasetToRangeAxis(0, 1); // ---------------------------- // Data and Axis - Response time tampered // - Dataset // - Renderer // - Dataset zu X-Axis 2 mappen final XYDataset dataResponseTimeTampered = createDatasetResponseTime("tampered"); XYLineAndShapeRenderer rendererResponseTimeTampered = new XYLineAndShapeRenderer(); // XYSplineRenderer(); rendererResponseTimeTampered.setSeriesPaint(0, new Color(189, 0, 0)); rendererResponseTimeTampered.setSeriesShape(0, new Ellipse2D.Double(-4, -4, 8.0, 8.0));// (-2.5, -2.5, 6.0, // 6.0) ); rendererResponseTimeTampered.setUseFillPaint(true); rendererResponseTimeTampered.setSeriesFillPaint(0, Color.white); rendererResponseTimeTampered.setUseOutlinePaint(false); rendererResponseTimeTampered.setSeriesOutlinePaint(0, Color.black); plot.setDataset(3, dataResponseTimeTampered); plot.setRenderer(3, rendererResponseTimeTampered); // plot.mapDatasetToRangeAxis(0, 2); // ---------------------------- // Data and X-Axis - Number Requests UNtampered // - X-Axis Number Requests final NumberAxis xAxis1 = new NumberAxis( "Number Requests Per Interval (" + (model.getIntervalLengthReport() / 1000) + " sec)"); xAxis1.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // xAxis1.setTickUnit( new NumberTickUnit(2) ); plot.setRangeAxis(1, xAxis1); // - Dataset // - Renderer final IntervalXYDataset dataNumberRequestsUntampered = createDatasetNumberRequestsUntampered(); final XYBarRenderer rendererNumberRequestsUntampered = new XYBarRenderer(0.2); rendererNumberRequestsUntampered.setShadowVisible(false); rendererNumberRequestsUntampered.setBarPainter(new StandardXYBarPainter()); rendererNumberRequestsUntampered.setSeriesPaint(0, new Color(128, 255, 128)); plot.setDataset(4, dataNumberRequestsUntampered); plot.setRenderer(4, rendererNumberRequestsUntampered); plot.mapDatasetToRangeAxis(4, 1); // ------------------------------- // Data - Number Requests tampered // - Dataset // - Renderer final IntervalXYDataset dataNumberRequestsTampered = createDatasetNumberRequestsTampered(); final XYBarRenderer rendererBarNumberRequestsTampered = new XYBarRenderer(0.2); rendererBarNumberRequestsTampered.setShadowVisible(false); rendererBarNumberRequestsTampered.setBarPainter(new StandardXYBarPainter()); rendererBarNumberRequestsTampered.setSeriesPaint(0, new Color(255, 148, 148)); plot.setDataset(5, dataNumberRequestsTampered); plot.setRenderer(5, rendererBarNumberRequestsTampered); plot.mapDatasetToRangeAxis(5, 1); // ------------------------- // Other formating stuff // - add annotations // final double x = new Day(9, SerialDate.MARCH, // 2002).getMiddleMillisecond(); // final XYTextAnnotation annotation = new // XYTextAnnotation("Anmerkung zu Datenpunkt", x, 1000.0); // annotation.setFont(new Font("SansSerif", Font.PLAIN, 9)); // plot.addAnnotation(annotation); // ------------------------- // Create custom LegendTitles // Legend Row 1 LegendTitle legendL1 = new LegendTitle(plot.getRenderer(0)); legendL1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendL1.setBorder(0, 0, 0, 0); LegendTitle legendR1 = new LegendTitle(plot.getRenderer(4)); legendR1.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendR1.setBorder(0, 0, 0, 0); BlockContainer blockcontainer = new BlockContainer(new BorderArrangement()); blockcontainer.setBorder(0, 0, 0, 0); blockcontainer.add(legendL1, RectangleEdge.LEFT); blockcontainer.add(legendR1, RectangleEdge.RIGHT); blockcontainer.add(new EmptyBlock(2000D, 0.0D)); CompositeTitle compositetitle1 = new CompositeTitle(blockcontainer); compositetitle1.setPosition(RectangleEdge.BOTTOM); // Legend Row 2 LegendTitle legendL2 = new LegendTitle(plot.getRenderer(2)); legendL2.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendL2.setBorder(0, 0, 0, 0); LegendTitle legendR2 = new LegendTitle(plot.getRenderer(5)); legendR2.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendR2.setBorder(0, 0, 0, 0); BlockContainer blockcontainer2 = new BlockContainer(new BorderArrangement()); blockcontainer2.setBorder(0, 0, 0, 0); blockcontainer2.add(legendL2, RectangleEdge.LEFT); blockcontainer2.add(legendR2, RectangleEdge.RIGHT); blockcontainer2.add(new EmptyBlock(2000D, 0.0D)); CompositeTitle compositetitle2 = new CompositeTitle(blockcontainer2); compositetitle2.setPosition(RectangleEdge.BOTTOM); // Legend Row 3 LegendTitle legendL3 = new LegendTitle(plot.getRenderer(3)); legendL3.setMargin(new RectangleInsets(2D, 2D, 2D, 2D)); legendL3.setBorder(0, 0, 0, 0); BlockContainer blockcontainer3 = new BlockContainer(new BorderArrangement()); blockcontainer3.setBorder(0, 0, 0, 0); blockcontainer3.add(legendL3, RectangleEdge.LEFT); blockcontainer3.add(new EmptyBlock(2000D, 0.0D)); CompositeTitle compositetitle3 = new CompositeTitle(blockcontainer3); compositetitle3.setPosition(RectangleEdge.BOTTOM); // ------------------------- // create Chart // - return a new chart containing the overlaid plot... plot.setDatasetRenderingOrder(DatasetRenderingOrder.REVERSE); plot.setOrientation(PlotOrientation.VERTICAL); JFreeChart jFreeChart = new JFreeChart(model.getAttackName() + " - Response Time Plot", // Roundtrip Time Plot JFreeChart.DEFAULT_TITLE_FONT, plot, true); // Add new legend boxes + format jFreeChart.addSubtitle(compositetitle1); jFreeChart.addSubtitle(compositetitle2); jFreeChart.addSubtitle(compositetitle3); // Surpress old Legends LegendTitle legendee2 = jFreeChart.getLegend(0); legendee2.setVisible(false); return jFreeChart; }