Java Examples for org.jfree.ui.TextAnchor

The following java examples will help you to understand the usage of org.jfree.ui.TextAnchor. These source code samples are taken from different open source projects.

Example 1
Project: radargun-master  File: TimelineChart.java View source code
public void setEvents(List<? extends Object> events, int slaveIndex, long startTimestamp, long endTimestamp, double lowerBound, double upperBound) {
    int paintIndex = slaveIndex % DEFAULT_PAINTS.length;
    if (paintIndex < 0)
        paintIndex += DEFAULT_PAINTS.length;
    paint = DEFAULT_PAINTS[paintIndex];
    this.startTimestamp = startTimestamp;
    this.endTimestamp = endTimestamp + (startTimestamp == endTimestamp ? 1 : 0);
    TimeSeries series = new TimeSeries("Slave " + slaveIndex);
    TimeSeriesCollection dataset = new TimeSeriesCollection(series, GMT);
    chart = ChartFactory.createTimeSeriesChart(null, "Time from start", null, dataset, false, false, false);
    chart.setBackgroundPaint(new Color(0, 0, 0, 0));
    XYPlot plot = chart.getXYPlot();
    plot.getRenderer().setSeriesPaint(0, paint);
    plot.setBackgroundAlpha(0);
    plot.setDomainGridlinesVisible(false);
    plot.setDomainZeroBaselineVisible(true);
    plot.setRangeGridlinesVisible(false);
    plot.setRangeZeroBaselineVisible(true);
    Number[] minValues = new Number[MAX_EVENT_VALUES];
    Number[] maxValues = new Number[MAX_EVENT_VALUES];
    long[] minTimestamps = new long[MAX_EVENT_VALUES];
    long[] maxTimestamps = new long[MAX_EVENT_VALUES];
    for (Object event : events) {
        if (event instanceof Timeline.Value) {
            Timeline.Value value = (Timeline.Value) event;
            if (value.timestamp > this.endTimestamp) {
                throw new IllegalStateException(String.format("Current timestamp %d is bigger then end timestamp %d", value.timestamp, this.endTimestamp));
            }
            int bucket = (int) ((value.timestamp - startTimestamp) * (MAX_EVENT_VALUES - 1) / (this.endTimestamp - startTimestamp));
            if (minValues[bucket] == null) {
                minValues[bucket] = value.value;
                maxValues[bucket] = value.value;
                minTimestamps[bucket] = value.timestamp;
                maxTimestamps[bucket] = value.timestamp;
            } else {
                if (minValues[bucket].doubleValue() > value.value.doubleValue()) {
                    minValues[bucket] = value.value;
                }
                if (maxValues[bucket].doubleValue() < value.value.doubleValue()) {
                    maxValues[bucket] = value.value;
                }
                minTimestamps[bucket] = Math.min(minTimestamps[bucket], value.timestamp);
                maxTimestamps[bucket] = Math.max(maxTimestamps[bucket], value.timestamp);
            }
        } else if (event instanceof Timeline.IntervalEvent) {
            Timeline.IntervalEvent intervalEvent = (Timeline.IntervalEvent) event;
            IntervalMarker marker = new IntervalMarker(intervalEvent.timestamp - startTimestamp, intervalEvent.timestamp + intervalEvent.duration - startTimestamp, paint, stroke, paint, stroke, 0.3f);
            marker.setLabel(intervalEvent.description);
            marker.setLabelAnchor(RectangleAnchor.BOTTOM);
            marker.setLabelTextAnchor(TextAnchor.BOTTOM_CENTER);
            marker.setLabelOffset(new RectangleInsets(0, 0, (slaveIndex + 1) * LABEL_OFFSET, 0));
            plot.addDomainMarker(marker);
        } else if (event instanceof Timeline.TextEvent) {
            Timeline.TextEvent textEvent = (Timeline.TextEvent) event;
            ValueMarker marker = new ValueMarker(textEvent.timestamp - startTimestamp, paint, stroke);
            marker.setLabel(textEvent.text);
            marker.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
            marker.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT);
            marker.setLabelOffset(new RectangleInsets(0, 0, (slaveIndex + 1) * LABEL_OFFSET, 0));
            plot.addDomainMarker(marker);
        }
    }
    for (int bucket = 0; bucket < MAX_EVENT_VALUES; ++bucket) {
        if (minValues[bucket] == null)
            continue;
        series.addOrUpdate(time(minTimestamps[bucket] - startTimestamp), minValues[bucket]);
        series.addOrUpdate(time(maxTimestamps[bucket] - startTimestamp), maxValues[bucket]);
    }
    DateAxis dateAxis = (DateAxis) plot.getDomainAxis();
    dateAxis.setTimeZone(GMT);
    dateAxis.setMinimumDate(new Date(0));
    dateAxis.setMaximumDate(new Date(endTimestamp - startTimestamp));
    if (upperBound > lowerBound) {
        plot.getRangeAxis().setRange(lowerBound, upperBound);
    }
}
Example 2
Project: bonita-simulation-master  File: BarChartVisibleBarLabel.java View source code
/* (non-Javadoc)
	 * @see net.sf.jasperreports.engine.JRChartCustomizer#customize(org.jfree.chart.JFreeChart, net.sf.jasperreports.engine.JRChart)
	 */
public void customize(JFreeChart chart, JRChart jasperChart) {
    BarRenderer bsr = (BarRenderer) chart.getCategoryPlot().getRenderer();
    bsr.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    bsr.setItemLabelsVisible(true);
    // Set position of Items label : center
    bsr.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    bsr.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    // If there isn't enough space to draw the ItemLabel...
    bsr.setPositiveItemLabelPositionFallback(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER));
    bsr.setNegativeItemLabelPositionFallback(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER));
}
Example 3
Project: cooper-master  File: SplineChartCreater.java View source code
private JFreeChart createChart(final GraphDataItem item) {
    JFreeChart jfreechart = ChartFactory.createXYLineChart(item.getTitle(), item.getLineXName(), item.getLineYName(), this.createData(item), PlotOrientation.VERTICAL, true, true, true);
    Font font = new Font("宋体", Font.PLAIN, 13);
    jfreechart.getTitle().setFont(font);
    jfreechart.getLegend().setItemFont(font);
    jfreechart.getXYPlot().getDomainAxis().setTickLabelFont(font);
    jfreechart.getXYPlot().getDomainAxis().setLabelFont(font);
    jfreechart.getXYPlot().getRangeAxis().setTickLabelFont(font);
    jfreechart.getXYPlot().getRangeAxis().setLabelFont(font);
    jfreechart.getXYPlot().setBackgroundPaint(ChartColor.WHITE);
    XYPlot xyplot = (XYPlot) jfreechart.getPlot();
    xyplot.setDomainPannable(true);
    xyplot.setRangePannable(true);
    if (item.getBgColordData() != null) {
        for (RegionColor region : item.getBgColordData().getData()) {
            IntervalMarker intervalmarker = new IntervalMarker(region.begin, region.end);
            intervalmarker.setLabel(region.title);
            intervalmarker.setLabelFont(new Font("宋体", 2, 11));
            intervalmarker.setLabelAnchor(RectangleAnchor.RIGHT);
            intervalmarker.setLabelTextAnchor(TextAnchor.CENTER_RIGHT);
            intervalmarker.setPaint(region.color);
            xyplot.addRangeMarker(intervalmarker, Layer.BACKGROUND);
        }
    }
    XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot.getRenderer();
    xylineandshaperenderer.setBaseShapesVisible(true);
    xylineandshaperenderer.setBaseShapesFilled(true);
    xylineandshaperenderer.setDrawOutlines(true);
    xylineandshaperenderer.setUseFillPaint(true);
    xylineandshaperenderer.setBaseFillPaint(Color.white);
    xylineandshaperenderer.setSeriesStroke(0, new BasicStroke(3F));
    xylineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F));
    xylineandshaperenderer.setSeriesShape(0, new java.awt.geom.Ellipse2D.Double(-5D, -5D, 10D, 10D));
    xylineandshaperenderer.setBaseItemLabelFont(new Font("宋体", 2, 11));
    if (item.getFgColorData() != null) {
        xylineandshaperenderer.setSeriesPaint(0, item.getFgColorData().mainColor);
    }
    final List<Object> values = new ArrayList<Object>();
    for (Object name : item.getDatas().keySet()) {
        values.add(name);
    }
    XYToolTipGenerator generator = new CustomXYToolTipGenerator() {

        @Override
        public String generateToolTip(XYDataset data, int series, int i) {
            return item.getTip(values.get(i));
        }
    };
    xylineandshaperenderer.setBaseToolTipGenerator(generator);
    xylineandshaperenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator() {

        @Override
        public String generateLabel(XYDataset dataset, int series, int i) {
            return item.getTip(values.get(i));
        }
    });
    xylineandshaperenderer.setBaseItemLabelsVisible(true);
    return jfreechart;
}
Example 4
Project: ismp_manager-master  File: ReportAction.java View source code
/**
     * 风险评估分�报告
     */
@SuppressWarnings("deprecation")
public ActionForward assessmentAnalysisReport(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    AsseInfoProj asseInfoProj = loadAsseInfoproj(request);
    Map reportMap = reportService.assessmentAnalysisReport(asseInfoProj);
    //饼状图所需数�
    Long HighRiskNum = (Long) reportMap.get("HighRiskNum");
    Long MiddRiskNum = (Long) reportMap.get("MiddRiskNum");
    Long LowRiskNum = (Long) reportMap.get("LowRiskNum");
    DefaultPieDataset dataSet = new DefaultPieDataset();
    dataSet.setValue("高风险点", HighRiskNum.doubleValue());
    dataSet.setValue("中风险点", MiddRiskNum.doubleValue());
    dataSet.setValue("低风险点", LowRiskNum.doubleValue());
    JFreeChart chart = ChartFactory.createPieChart3D("��风险等级的数�统计", dataSet, true, true, false);
    chart.getTitle().setFont(new Font("宋体", Font.PLAIN, 18));
    //获�图表区域对象
    PiePlot piePlot = (PiePlot) chart.getPlot();
    piePlot.setLabelFont(new Font("宋体", Font.BOLD, 12));
    chart.getLegend().setItemFont(new Font("宋体", 0, 12));
    PiePlot3D piePlot3D = (PiePlot3D) chart.getPlot();
    piePlot3D.setStartAngle(150D);
    piePlot3D.setDirection(Rotation.CLOCKWISE);
    piePlot3D.setForegroundAlpha(0.5F);
    piePlot3D.setNoDataMessage("无数�显示");
    piePlot3D.setCircular(true);
    piePlot3D.setLabelFont(new Font("宋体", 0, 18));
    piePlot3D.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}有{1}个 �{2}", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));
    String filename = ServletUtilities.saveChartAsPNG(chart, 700, 400, null, request.getSession());
    String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
    request.setAttribute("graphURL", graphURL);
    request.setAttribute("filename", filename);
    //柱状图所需数�
    double[][] asseData = (double[][]) reportMap.get("asseData");
    String[] asseDataRowKeys = (String[]) reportMap.get("asseDataRowKeys");
    String[] asseDataColumnKeys = (String[]) reportMap.get("asseDataColumnKeys");
    CategoryDataset dataset1 = DatasetUtilities.createCategoryDataset(asseDataRowKeys, asseDataColumnKeys, asseData);
    JFreeChart chart1 = ChartFactory.createBarChart3D("��资产的��等级风险统计", "风险", "风险数目", dataset1, PlotOrientation.VERTICAL, true, true, false);
    CategoryPlot plot = chart1.getCategoryPlot();
    CategoryAxis domainAxis = plot.getDomainAxis();
    NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
    TextTitle textTitle = chart1.getTitle();
    textTitle.setFont(new Font("宋体", Font.PLAIN, 18));
    domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
    domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
    numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
    numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
    chart1.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
    //设置网格背景颜色
    plot.setBackgroundPaint(Color.white);
    //设置网格竖线颜色
    plot.setDomainGridlinePaint(Color.pink);
    //设置网格横线颜色
    plot.setRangeGridlinePaint(Color.pink);
    Font font = new Font("宋体", 0, 16);
    plot.getDomainAxis().setLabelFont(font);
    plot.getDomainAxis().setTickLabelFont(font);
    plot.getRangeAxis().setLabelFont(font);
    plot.getRangeAxis().setTickLabelFont(font);
    //显示�个柱的数值,并修改该数值的字体属性
    BarRenderer3D renderer = new BarRenderer3D();
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    //默认的数字显示在柱�中,通过如下两��调整数字的显示
    //注�:此�很关键,若无此�,那数字的显示会被覆盖,给人数字没有显示出�的问题
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    renderer.setItemLabelAnchorOffset(10D);
    //设置�个地区所包�的平行柱的之间�离
    renderer.setItemMargin(0.3);
    renderer.setItemLabelFont(new Font("宋体", Font.BOLD, 12));
    plot.setRenderer(renderer);
    plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    String filename1 = ServletUtilities.saveChartAsPNG(chart1, 700, 400, null, request.getSession());
    String graphURL1 = request.getContextPath() + "/DisplayChart?filename=" + filename1;
    request.setAttribute("graphURL1", graphURL1);
    request.setAttribute("filename1", filename1);
    //�资产的风险列表
    List repoList = (List) reportMap.get("repoList");
    request.setAttribute("repoList", repoList);
    List dicSecuLeveList = dicSecuLeveService.findAll();
    request.setAttribute("dicSecuLeveList", dicSecuLeveList);
    return mapping.findForward("report7");
}
Example 5
Project: mdrill-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    RectangleInsets labelInsets = new RectangleInsets(UnitType.RELATIVE, 0.18, 0.18, 0.18, 0.18);
    Rectangle2D labelsArea = labelInsets.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 6
Project: performance-benchmark-master  File: JFreeBarChart.java View source code
@Override
protected JFreeChart createChart(AbstractDataset dataset) {
    JFreeChart chart = ChartFactory.createBarChart("Performance chart", "Bench case", "Time(s)", (DefaultCategoryDataset) dataset, PlotOrientation.VERTICAL, true, true, false);
    rotateCategoryAxis(chart, Math.PI / 4.0);
    CategoryPlot plot = chart.getCategoryPlot();
    BarRenderer renderer = (BarRenderer) plot.getRenderer();
    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator() {

        public String generateColumnLabel(CategoryDataset dataset, int column) {
            return "col" + column;
        }

        public String generateLabel(CategoryDataset dataset, int row, int column) {
            return "" + dataset.getValue(row, column).intValue();
        }

        public String generateRowLabel(CategoryDataset dataset, int row) {
            return "row" + row;
        }
    });
    renderer.setBaseItemLabelPaint(Color.black);
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0));
    renderer.setItemLabelsVisible(true);
    return chart;
}
Example 7
Project: SPIM_Registration-master  File: MouseListenerTimelapse.java View source code
protected ValueMarker makeMarker(final int timePoint) {
    final ValueMarker valueMarker = new ValueMarker(timePoint);
    valueMarker.setStroke(new BasicStroke(1.5f));
    valueMarker.setPaint(new Color(0.0f, 93f / 255f, 9f / 255f));
    valueMarker.setLabel(" Reference\n Timepoint " + timePoint);
    valueMarker.setLabelAnchor(RectangleAnchor.BOTTOM);
    valueMarker.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT);
    return valueMarker;
}
Example 8
Project: aorra-master  File: BeerCoasterV2.java View source code
private void drawArc(GraphUtils g, float radius, int startAngle, int arcAngle, Condition condition, String label, float labelRadius, int labelAngle, Rotation labelDirection, Color fc, GraphUtils.TextAnchor anchor) {
    Stroke stroke = g.getGraphics().getStroke();
    g.getGraphics().setColor(getColor(condition));
    g.fillArc(bcx, bcy, radius, startAngle, arcAngle);
    g.getGraphics().setColor(Color.WHITE);
    g.getGraphics().setStroke(new BasicStroke(BORDER_WIDTH));
    g.drawArc(bcx, bcy, radius, startAngle, arcAngle);
    g.getGraphics().setColor(fc);
    g.drawCircleText(label, bcx, bcy, labelRadius, GraphUtils.toRadians(labelAngle), labelDirection == Rotation.CLOCKWISE, anchor);
    g.getGraphics().setStroke(stroke);
}
Example 9
Project: ascension-log-visualizer-new-master  File: GanttChartBuilder.java View source code
private void addDayMarkers(final CategoryPlot plot) {
    for (final DayChange dc : this.getLogData().getDayChanges()) {
        final ValueMarker day = new ValueMarker(dc.getTurnNumber());
        day.setLabel("Day " + dc.getDayNumber());
        day.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
        day.setLabelTextAnchor(TextAnchor.TOP_LEFT);
        day.setStroke(new BasicStroke(2));
        day.setPaint(Color.BLUE);
        plot.addRangeMarker(day);
    }
}
Example 10
Project: ATK-master  File: Action.java View source code
/**
 	 * Set Annotation properties  used in Analysis Tool (keypress,log,screenshot...) 
 	 * For each action a marker and an Annotation is related
 	 * @param Xvalue StartTime of Marker Action
 	 * @param Yvalue Position where to display the comment 1 for the top 0 for the bottom
 	 * @param color Color of Marker
 	 */
public void setAnnotation(double Xvalue, Paint color) {
    if (szActionName != null) {
        annotation = new XYTextAnnotation(szActionName, Xvalue, 0.05);
        annotation.setFont(new Font("SansSerif", Font.PLAIN, 12));
        annotation.setRotationAngle(3 * Math.PI / 2);
        annotation.setRotationAnchor(TextAnchor.BOTTOM_LEFT);
        annotation.setTextAnchor(TextAnchor.BOTTOM_LEFT);
        annotation.setToolTipText(szActionName);
        annotation.setPaint(color);
    }
}
Example 11
Project: codehaus-mojo-master  File: ChartUtil.java View source code
/**
     * Generate a {@link ValueMarker}.
     */
private static ValueMarker addValueMarker(String text, double x, boolean domain) {
    ValueMarker marker = new ValueMarker(x);
    marker.setPaint(Color.GRAY);
    marker.setLabel(text);
    if (domain) {
        marker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
        marker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    } else {
        marker.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
        marker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
    }
    return marker;
}
Example 12
Project: ConcesionariaDB-master  File: GenericChartTheme.java View source code
/**
	 *
	 */
protected JFreeChart createDialChart() throws JRException {
    JRMeterPlot jrPlot = (JRMeterPlot) getPlot();
    // get data for diagrams
    DialPlot dialPlot = new DialPlot();
    dialPlot.setDataset((ValueDataset) getDataset());
    StandardDialFrame dialFrame = new StandardDialFrame();
    dialPlot.setDialFrame(dialFrame);
    DialBackground db = new DialBackground(jrPlot.getBackcolor());
    dialPlot.setBackground(db);
    Range range = convertRange(jrPlot.getDataRange());
    //double bound = Math.max(Math.abs(range.getUpperBound()), Math.abs(range.getLowerBound()));
    StandardDialScale scale = new StandardDialScale(range.getLowerBound(), range.getUpperBound(), 225, -270, (range.getUpperBound() - range.getLowerBound()) / 6, 15);
    scale.setTickRadius(0.9);
    scale.setTickLabelOffset(0.16);
    JRFont tickLabelFont = jrPlot.getTickLabelFont();
    Integer defaultBaseFontSize = (Integer) getDefaultValue(defaultChartPropertiesMap, ChartThemesConstants.BASEFONT_SIZE);
    Font themeTickLabelFont = getFont((JRFont) getDefaultValue(defaultPlotPropertiesMap, ChartThemesConstants.PLOT_TICK_LABEL_FONT), tickLabelFont, defaultBaseFontSize);
    scale.setTickLabelFont(themeTickLabelFont);
    scale.setMajorTickStroke(new BasicStroke(1f));
    scale.setMinorTickStroke(new BasicStroke(0.3f));
    scale.setMajorTickPaint(jrPlot.getTickColor());
    scale.setMinorTickPaint(jrPlot.getTickColor());
    scale.setTickLabelsVisible(true);
    scale.setFirstTickLabelVisible(true);
    dialPlot.addScale(0, scale);
    List intervals = jrPlot.getIntervals();
    if (intervals != null && intervals.size() > 0) {
        int size = Math.min(3, intervals.size());
        int colorStep = 0;
        if (size > 0)
            colorStep = 255 / size;
        for (int i = 0; i < size; i++) {
            JRMeterInterval interval = (JRMeterInterval) intervals.get(i);
            Range intervalRange = convertRange(interval.getDataRange());
            Color color = new Color(255 - colorStep * i, 0 + colorStep * i, 0);
            StandardDialRange dialRange = new StandardDialRange(intervalRange.getLowerBound(), intervalRange.getUpperBound(), interval.getBackgroundColor() == null ? color : interval.getBackgroundColor());
            dialRange.setInnerRadius(0.41);
            dialRange.setOuterRadius(0.41);
            dialPlot.addLayer(dialRange);
        }
    }
    JRValueDisplay display = jrPlot.getValueDisplay();
    String displayVisibility = display != null && getChart().hasProperties() ? getChart().getPropertiesMap().getProperty(DefaultChartTheme.PROPERTY_DIAL_VALUE_DISPLAY_VISIBLE) : "false";
    if (Boolean.parseBoolean(displayVisibility)) {
        DialValueIndicator dvi = new DialValueIndicator(0);
        dvi.setBackgroundPaint(ChartThemesConstants.TRANSPARENT_PAINT);
        //			dvi.setFont(JRFontUtil.getAwtFont(jrFont).deriveFont(10f).deriveFont(Font.BOLD));
        dvi.setOutlinePaint(ChartThemesConstants.TRANSPARENT_PAINT);
        dvi.setPaint(Color.WHITE);
        String pattern = display.getMask() != null ? display.getMask() : "#,##0.####";
        if (pattern != null)
            dvi.setNumberFormat(new DecimalFormat(pattern));
        dvi.setRadius(0.15);
        dvi.setValueAnchor(RectangleAnchor.CENTER);
        dvi.setTextAnchor(TextAnchor.CENTER);
        //dvi.setTemplateValue(Double.valueOf(getDialTickValue(dialPlot.getValue(0),dialUnitScale)));
        dialPlot.addLayer(dvi);
    }
    String label = getChart().hasProperties() ? getChart().getPropertiesMap().getProperty(DefaultChartTheme.PROPERTY_DIAL_LABEL) : null;
    if (label != null) {
        JRFont displayFont = jrPlot.getValueDisplay().getFont();
        Font themeDisplayFont = getFont((JRFont) getDefaultValue(defaultPlotPropertiesMap, ChartThemesConstants.PLOT_DISPLAY_FONT), displayFont, defaultBaseFontSize);
        String[] textLines = label.split("\\n");
        for (int i = 0; i < textLines.length; i++) {
            DialTextAnnotation dialAnnotation = new DialTextAnnotation(textLines[i]);
            dialAnnotation.setFont(themeDisplayFont);
            dialAnnotation.setPaint(jrPlot.getValueDisplay().getColor());
            dialAnnotation.setRadius(Math.sin(Math.PI / 4.0) + i / 10.0);
            dialAnnotation.setAnchor(TextAnchor.CENTER);
            dialPlot.addLayer(dialAnnotation);
        }
    }
    DialPointer needle = new DialPointer.Pointer();
    needle.setVisible(true);
    needle.setRadius(0.91);
    dialPlot.addLayer(needle);
    DialCap cap = new DialCap();
    cap.setRadius(0.05);
    cap.setFillPaint(Color.DARK_GRAY);
    cap.setOutlinePaint(Color.GRAY);
    cap.setOutlineStroke(new BasicStroke(0.5f));
    dialPlot.setCap(cap);
    JFreeChart jfreeChart = new JFreeChart((String) evaluateExpression(getChart().getTitleExpression()), null, dialPlot, isShowLegend());
    // Set all the generic options
    configureChart(jfreeChart, getPlot());
    return jfreeChart;
}
Example 13
Project: EvolutionaryMusic-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    RectangleInsets labelInsets = new RectangleInsets(UnitType.RELATIVE, 0.18, 0.18, 0.18, 0.18);
    Rectangle2D labelsArea = labelInsets.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 14
Project: HeartRateAdjuster-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator myLabelGenerator = getLabelGenerator();
            if (myLabelGenerator == null) {
                continue;
            }
            String label = myLabelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(label, g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 15
Project: mafscaling-master  File: LogView.java View source code
@Override
public void chartMouseMoved(ChartMouseEvent event) {
    try {
        wotPlot.clearRangeMarkers();
        wotMarker.clearLabels(false);
        Rectangle2D dataArea = wotChartPanel.getChartRenderingInfo().getPlotInfo().getDataArea();
        Point2D p = wotChartPanel.translateScreenToJava2D(event.getTrigger().getPoint());
        double y = 0;
        double x = wotPlot.getDomainAxis(0).java2DToValue(p.getX(), dataArea, wotPlot.getDomainAxisEdge());
        boolean isLeft = (p.getX() < (dataArea.getMaxX() - dataArea.getMinX()) / 2) ? true : false;
        if (isLeft) {
            wotMarker.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
            wotMarker.setLabelTextAnchor(TextAnchor.TOP_LEFT);
        } else {
            wotMarker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
            wotMarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
        }
        XYSeriesCollection dataset;
        NumberAxis rangeAxis;
        boolean show = false;
        for (int i = 0; i < wotPlot.getDatasetCount(); ++i) {
            dataset = (XYSeriesCollection) wotPlot.getDataset(i);
            if (dataset != null && dataset.getSeriesCount() > 0) {
                show = true;
                rangeAxis = (NumberAxis) wotPlot.getRangeAxis(i);
                y = rangeAxis.java2DToValue(p.getY(), dataArea, wotPlot.getRangeAxisEdge());
                wotMarker.addLabel(rangeAxis.getLabel() + ": " + df.format(y), new Color(255 - i, 255, 255), false);
            }
        }
        if (show) {
            wotMarker.setValue(x);
            y = wotPlot.getRangeAxis().java2DToValue(p.getY(), dataArea, wotPlot.getRangeAxisEdge());
            Marker yMarker = new ValueMarker(y);
            yMarker.setPaint(Color.WHITE);
            wotPlot.addRangeMarker(yMarker);
        }
        wotChartPanel.repaint();
    } catch (Exception ex) {
        ex.printStackTrace();
        logger.error(ex);
    }
}
Example 16
Project: opentestbed-master  File: BankrollGraphUI.java View source code
/**
	 * creates a JFreeChart from all the data
	 * @param playerToBankRoll
	 * @param xySeriesCollection
	 * @return
	 */
private JFreeChart createJFreeChart(Map<String, Double> playerToBankRoll, XYSeriesCollection xySeriesCollection, int snapshotCurrentGamesPlayed) {
    final JFreeChart chart = ChartFactory.createXYLineChart("Bankroll after " + (currentSeatPermutation + 1) + " seat permutation(s)", "Games", "Bankroll", xySeriesCollection, PlotOrientation.VERTICAL, true, false, false);
    chart.setBackgroundPaint(Color.WHITE);
    chart.getXYPlot().setBackgroundPaint(Color.WHITE);
    //.get.setOutlineStroke()
    XYItemRenderer xyir = chart.getXYPlot().getRenderer();
    try {
        xyir.setBaseStroke(new BasicStroke(3));
        // bug workaround
        ((AbstractRenderer) xyir).setAutoPopulateSeriesStroke(false);
    //			xyir.setSeriesStroke(new BasicStroke(5));
    //			xyir.setSeriesStroke(0, ); //series line style
    } catch (Exception e) {
        System.err.println("Error setting style: " + e);
    }
    // create some Pointers to the final bankrolls
    for (String playerName : playerNames) {
        double finalBankroll = playerToBankRoll.get(playerName);
        DecimalFormat moneyFormat = new DecimalFormat("0.00");
        String resultString = playerName + ": $" + moneyFormat.format(finalBankroll) + " ($" + moneyFormat.format(finalBankroll / (snapshotCurrentGamesPlayed / 100D)) + "/100)";
        final XYPointerAnnotation pointer = new XYPointerAnnotation(resultString, Math.min(snapshotCurrentGamesPlayed, numGames), finalBankroll, Math.PI * 5.9 / 6);
        pointer.setBaseRadius(130.0);
        pointer.setTipRadius(1.0);
        pointer.setLabelOffset(10.0);
        pointer.setOutlineVisible(true);
        pointer.setBackgroundPaint(Color.WHITE);
        chart.getXYPlot().addAnnotation(pointer);
    }
    // after the first permutation the next permutations get
    // merges with the existing data. We show a marker, what
    // data is already merged
    final Marker permutationEnd = new ValueMarker(snapshotCurrentGamesPlayed % numGames);
    permutationEnd.setLabel((currentSeatPermutation + 1) + " permutation(s)");
    permutationEnd.setLabelAnchor(RectangleAnchor.TOP_LEFT);
    permutationEnd.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    chart.getXYPlot().addDomainMarker(permutationEnd);
    return chart;
}
Example 17
Project: opentrader.github.com-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    RectangleInsets labelInsets = new RectangleInsets(UnitType.RELATIVE, 0.18, 0.18, 0.18, 0.18);
    Rectangle2D labelsArea = labelInsets.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 18
Project: orsonpdf-master  File: PDFBarChartDemo1.java View source code
/**
     * Creates a sample chart.
     *
     * @param dataset  a dataset.
     *
     * @return The chart.
     */
private static JFreeChart createChart(CategoryDataset dataset) {
    // create the chart...
    JFreeChart chart = ChartFactory.createLineChart("Statistical Bar Chart Demo 1", "Type", "Value", dataset, PlotOrientation.VERTICAL, true, false, false);
    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    // customise the range axis...
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    rangeAxis.setAutoRangeIncludesZero(false);
    // customise the renderer...
    StatisticalBarRenderer renderer = new StatisticalBarRenderer();
    renderer.setDrawBarOutline(false);
    renderer.setErrorIndicatorPaint(Color.black);
    renderer.setIncludeBaseInRange(false);
    plot.setRenderer(renderer);
    // ensure the current theme is applied to the renderer just added
    ChartUtilities.applyCurrentTheme(chart);
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBaseItemLabelPaint(Color.yellow);
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER));
    // set up gradient paints for series...
    GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 0.0f, 0.0f, new Color(0, 0, 64));
    GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 0.0f, 0.0f, new Color(0, 64, 0));
    renderer.setSeriesPaint(0, gp0);
    renderer.setSeriesPaint(1, gp1);
    return chart;
}
Example 19
Project: projects-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator myLabelGenerator = getLabelGenerator();
            if (myLabelGenerator == null) {
                continue;
            }
            String label = myLabelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(label, g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 20
Project: queueing-simulation-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 21
Project: snap-desktop-master  File: CustomLogarithmicAxis.java View source code
private void addHorizontalTicks(RectangleEdge edge, List ticks, double lowerBoundVal, String tickLabel, double tickVal) {
    if (tickVal >= lowerBoundVal - SMALL_LOG_VALUE) {
        //tick value not below lowest data value
        TextAnchor anchor;
        TextAnchor rotationAnchor;
        double angle = 0.0;
        if (isVerticalTickLabels()) {
            anchor = TextAnchor.CENTER_RIGHT;
            rotationAnchor = TextAnchor.CENTER_RIGHT;
            if (edge == RectangleEdge.TOP) {
                angle = Math.PI / 2.0;
            } else {
                angle = -Math.PI / 2.0;
            }
        } else {
            if (edge == RectangleEdge.TOP) {
                anchor = TextAnchor.BOTTOM_CENTER;
                rotationAnchor = TextAnchor.BOTTOM_CENTER;
            } else {
                anchor = TextAnchor.TOP_CENTER;
                rotationAnchor = TextAnchor.TOP_CENTER;
            }
        }
        ticks.add(new NumberTick(new Double(tickVal), tickLabel, anchor, rotationAnchor, angle));
    }
}
Example 22
Project: watchmaker-master  File: JVMView.java View source code
private JFreeChart createHeapChart(double maxMemory) {
    TimeSeriesCollection dataSet = new TimeSeriesCollection();
    dataSet.addSeries(memoryUsageSeries);
    dataSet.addSeries(heapSizeSeries);
    JFreeChart chart = ChartFactory.createXYAreaChart("JVM Heap", "Time", "Megabytes", dataSet, PlotOrientation.VERTICAL, // Legend.
    true, // Tooltips.
    false, false);
    DateAxis timeAxis = new DateAxis("Time");
    timeAxis.setLowerMargin(0);
    timeAxis.setUpperMargin(0);
    chart.getXYPlot().setDomainAxis(timeAxis);
    chart.getXYPlot().getRangeAxis().setLowerBound(0);
    // Add 10% to leave room for marker.
    chart.getXYPlot().getRangeAxis().setUpperBound(maxMemory * 1.1);
    // Add a horizontal marker to indicate the heap growth limit.
    ValueMarker marker = new ValueMarker(maxMemory, Color.BLACK, new BasicStroke(1));
    marker.setLabel("Maximum Permitted Heap Size (adjust with -Xmx)");
    marker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
    marker.setLabelAnchor(RectangleAnchor.RIGHT);
    chart.getXYPlot().addRangeMarker(marker);
    chart.getXYPlot().getRenderer().setSeriesPaint(0, Color.RED);
    chart.getXYPlot().getRenderer().setSeriesPaint(1, new Color(0, 128, 0, 128));
    return chart;
}
Example 23
Project: ZazilDWH-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator myLabelGenerator = getLabelGenerator();
            if (myLabelGenerator == null) {
                continue;
            }
            String label = myLabelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(label, g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 24
Project: ASH-Viewer-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    RectangleInsets labelInsets = new RectangleInsets(UnitType.RELATIVE, 0.18, 0.18, 0.18, 0.18);
    Rectangle2D labelsArea = labelInsets.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 25
Project: atlasframework-master  File: FeatureClassification.java View source code
@Override
public BufferedImage createHistogramImage(boolean showMean, boolean showSd, int histogramBins, String label_xachsis) throws InterruptedException, IOException {
    HistogramDataset hds = new HistogramDataset();
    DoubleArrayList valuesAL;
    valuesAL = getStatistics().elements();
    // new double[] {0.4,3,4,2,5.,22.,4.,2.,33.,12.}
    double[] elements = Arrays.copyOf(valuesAL.elements(), getStatistics().size());
    hds.addSeries(1, elements, histogramBins);
    /** Statically label the Y Axis **/
    String label_yachsis = ASUtil.R("QuantitiesClassificationGUI.Histogram.YAxisLabel");
    JFreeChart chart = org.jfree.chart.ChartFactory.createHistogram(null, label_xachsis, label_yachsis, hds, PlotOrientation.VERTICAL, false, true, true);
    /***********************************************************************
		 * Paint the classes into the JFreeChart
		 */
    int countLimits = 0;
    for (Double cLimit : getClassLimits()) {
        ValueMarker marker = new ValueMarker(cLimit);
        XYPlot plot = chart.getXYPlot();
        marker.setPaint(Color.orange);
        marker.setLabel(String.valueOf(countLimits));
        marker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
        marker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
        plot.addDomainMarker(marker);
        countLimits++;
    }
    /***********************************************************************
		 * Optionally painting SD and MEAN into the histogram
		 */
    try {
        if (showSd) {
            ValueMarker marker;
            marker = new ValueMarker(getStatistics().standardDeviation(), Color.green.brighter(), new BasicStroke(1.5f));
            XYPlot plot = chart.getXYPlot();
            marker.setLabel(ASUtil.R("QuantitiesClassificationGUI.Histogram.SD.ShortLabel"));
            marker.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
            marker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
            plot.addDomainMarker(marker);
        }
        if (showMean) {
            ValueMarker marker;
            marker = new ValueMarker(getStatistics().mean(), Color.green.darker(), new BasicStroke(1.5f));
            XYPlot plot = chart.getXYPlot();
            marker.setLabel(ASUtil.R("QuantitiesClassificationGUI.Histogram.Mean.ShortLabel"));
            marker.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
            marker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
            plot.addDomainMarker(marker);
        }
    } catch (Exception e) {
        LOGGER.error("Painting SD and MEAN into the histogram", e);
    }
    /***********************************************************************
		 * Render the Chart
		 */
    BufferedImage image = chart.createBufferedImage(400, 200);
    return image;
}
Example 26
Project: cewolf-master  File: AnnotationProcessor.java View source code
public void processChart(Object chart, Map params) {
    String text = "text goes here";
    String fontName = "SansSerif";
    int fontSize = 14;
    boolean isBold = false;
    boolean isItalic = false;
    double x = 0.0;
    double y = 0.0;
    String category = null;
    double value = 0.0;
    TextAnchor textAnchor = TextAnnotation.DEFAULT_TEXT_ANCHOR;
    Color textPaint = new Color(0, 0, 0);
    Color arrowPaint = new Color(0, 0, 0);
    double arrowAngle = 0;
    boolean drawArrow = false;
    String str = (String) params.get("text");
    if (str != null && str.trim().length() > 0)
        text = str.trim();
    String fontNameParam = (String) params.get("fontname");
    if (fontNameParam != null && fontNameParam.trim().length() > 0)
        fontName = fontNameParam.trim();
    String fontSizeParam = (String) params.get("fontsize");
    if (fontSizeParam != null && fontSizeParam.trim().length() > 0) {
        try {
            fontSize = Integer.parseInt(fontSizeParam);
            if (fontSize < 4)
                fontSize = 14;
        } catch (NumberFormatException nfex) {
        }
    }
    String boldParam = (String) params.get("bold");
    if (boldParam != null)
        isBold = "true".equals(boldParam.toLowerCase());
    String italicParam = (String) params.get("italic");
    if (italicParam != null)
        isItalic = "true".equals(italicParam.toLowerCase());
    Font font = new Font(fontName, (isBold ? Font.BOLD : 0) + (isItalic ? Font.ITALIC : 0), fontSize);
    str = (String) params.get("x");
    if (str != null) {
        try {
            x = Double.parseDouble(str);
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("y");
    if (str != null) {
        try {
            y = Double.parseDouble(str);
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("category");
    if (str != null && str.trim().length() > 0)
        category = str.trim();
    str = (String) params.get("value");
    if (str != null) {
        try {
            value = Double.parseDouble(str);
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("textPaint");
    if (str != null && str.trim().length() > 0) {
        try {
            textPaint = Color.decode(str);
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("arrowPaint");
    if (str != null && str.trim().length() > 0) {
        try {
            arrowPaint = Color.decode(str);
            drawArrow = true;
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("arrowAngle");
    if (str != null) {
        try {
            arrowAngle = Double.parseDouble(str);
            drawArrow = true;
        } catch (NumberFormatException nfex) {
        }
    }
    str = (String) params.get("textAnchor");
    if (str != null) {
        if ("BASELINE_CENTER".equals(str))
            textAnchor = TextAnchor.BASELINE_CENTER;
        else if ("BASELINE_LEFT".equals(str))
            textAnchor = TextAnchor.BASELINE_LEFT;
        else if ("BASELINE_RIGHT".equals(str))
            textAnchor = TextAnchor.BASELINE_RIGHT;
        else if ("BOTTOM_CENTER".equals(str))
            textAnchor = TextAnchor.BOTTOM_CENTER;
        else if ("BOTTOM_LEFT".equals(str))
            textAnchor = TextAnchor.BOTTOM_LEFT;
        else if ("BOTTOM_RIGHT".equals(str))
            textAnchor = TextAnchor.BOTTOM_RIGHT;
        else if ("CENTER".equals(str))
            textAnchor = TextAnchor.CENTER;
        else if ("CENTER_LEFT".equals(str))
            textAnchor = TextAnchor.CENTER_LEFT;
        else if ("CENTER_RIGHT".equals(str))
            textAnchor = TextAnchor.CENTER_RIGHT;
        else if ("HALF_ASCENT_CENTER".equals(str))
            textAnchor = TextAnchor.HALF_ASCENT_CENTER;
        else if ("HALF_ASCENT_LEFT".equals(str))
            textAnchor = TextAnchor.HALF_ASCENT_LEFT;
        else if ("HALF_ASCENT_RIGHT".equals(str))
            textAnchor = TextAnchor.HALF_ASCENT_RIGHT;
        else if ("TOP_CENTER".equals(str))
            textAnchor = TextAnchor.TOP_CENTER;
        else if ("TOP_LEFT".equals(str))
            textAnchor = TextAnchor.TOP_LEFT;
        else if ("TOP_RIGHT".equals(str))
            textAnchor = TextAnchor.TOP_RIGHT;
    }
    Plot plot = ((JFreeChart) chart).getPlot();
    if (plot instanceof XYPlot) {
        XYTextAnnotation anno = drawArrow ? new XYPointerAnnotation(text, x, y, arrowAngle) : new XYTextAnnotation(text, x, y);
        anno.setPaint(textPaint);
        anno.setFont(font);
        anno.setTextAnchor(textAnchor);
        if (drawArrow) {
            ((XYPointerAnnotation) anno).setArrowPaint(arrowPaint);
        }
        ((XYPlot) plot).addAnnotation(anno);
    } else if (plot instanceof CategoryPlot) {
        CategoryTextAnnotation anno = drawArrow ? new CategoryPointerAnnotation(text, category, value, arrowAngle) : new CategoryTextAnnotation(text, category, value);
        anno.setPaint(textPaint);
        anno.setFont(font);
        anno.setTextAnchor(textAnchor);
        if (drawArrow) {
            ((CategoryPointerAnnotation) anno).setArrowPaint(arrowPaint);
        }
        ((CategoryPlot) plot).addAnnotation(anno);
    }
}
Example 27
Project: cids-custom-switchon-master  File: RaineventChartPanel.java View source code
/**
         * DOCUMENT ME!
         *
         * @param   dataset  DOCUMENT ME!
         *
         * @return  DOCUMENT ME!
         */
private JFreeChart createChart(final DefaultCategoryDataset dataset) {
    final JFreeChart chart = ChartFactory.createBarChart(null, org.openide.util.NbBundle.getMessage(RaineventChartPanel.class, "RaineventChartPanel.createChart(DefaultCategoryDataset).xAxis"), org.openide.util.NbBundle.getMessage(RaineventChartPanel.class, "RaineventChartPanel.createChart(DefaultCategoryDataset).yAxis"), dataset, PlotOrientation.VERTICAL, false, false, false);
    // set the background color for the chart...
    chart.setBackgroundPaint(Color.white);
    // get a reference to the plot for further customisation...
    final CategoryPlot plot = chart.getCategoryPlot();
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    // set the range axis to display integers only...
    final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    rangeAxis.setUpperMargin(0.15);
    final StackedBarRenderer renderer = new StackedBarRenderer(false);
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
    renderer.setSeriesPaint(0, ChartColor.VERY_LIGHT_BLUE);
    renderer.setShadowVisible(false);
    chart.getCategoryPlot().setRenderer(renderer);
    return chart;
}
Example 28
Project: ITK-Stock-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    RectangleInsets labelInsets = new RectangleInsets(UnitType.RELATIVE, 0.18, 0.18, 0.18, 0.18);
    Rectangle2D labelsArea = labelInsets.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 29
Project: Java_gui_4_ECF-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 30
Project: jeql-master  File: CategoryChart.java View source code
/**
	 * Creates a chart.
	 * 
	 * @param dataset  the dataset.
	 * 
	 * @return A chart.
	 */
private JFreeChart createChart(CategoryDataset dataset) {
    String chartType = getChartType();
    JFreeChart chart = null;
    if (chartType == CHART_TYPE_LINE && param.isExtruded) {
        chart = ChartFactory.createLineChart3D(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    } else if (chartType == CHART_TYPE_LINE && param.isFilled)
        chart = ChartFactory.createAreaChart(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    else if (chartType == CHART_TYPE_BAR && param.isExtruded)
        chart = ChartFactory.createBarChart3D(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    else if (chartType == CHART_TYPE_LINE) {
        chart = ChartFactory.createLineChart(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    } else if (chartType == CHART_TYPE_BAR) {
        // Create a simple Bar chart
        chart = ChartFactory.createBarChart(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    } else if (chartType == CHART_TYPE_BAR_STACKED && param.isExtruded) {
        chart = ChartFactory.createStackedBarChart3D(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    } else if (chartType == CHART_TYPE_BAR_STACKED) {
        chart = ChartFactory.createStackedBarChart(param.title, param.axisXTitle, param.axisYTitle, dataset, param.plotOrientation, param.showLegend, false, false);
    }
    CategoryPlot plot = chart.getCategoryPlot();
    // set X axis label angles
    if (param.axisXLabelRotation != 0.0) {
        CategoryAxis axis = plot.getDomainAxis();
        axis.setCategoryLabelPositions(getCategoryLabelPosition(param.axisXLabelRotation));
    }
    CategoryItemRenderer renderer = plot.getRenderer();
    if (param.showItemLabels) {
        renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        renderer.setBaseItemLabelsVisible(true);
        if (param.itemLabelRotation != 0.0) {
            double ang = -1 * Math.PI / 2 * param.itemLabelRotation;
            ItemLabelPosition pos = renderer.getBasePositiveItemLabelPosition();
            ItemLabelPosition pos2 = new ItemLabelPosition(pos.getItemLabelAnchor(), TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, ang);
            renderer.setBasePositiveItemLabelPosition(pos2);
        }
    }
    // set up bar painting
    if (param.color != null)
        renderer.setSeriesPaint(0, param.color);
    if (renderer instanceof BarRenderer) {
        BarRenderer barRend = (BarRenderer) renderer;
        // don't draw shadow
        barRend.setShadowVisible(false);
        barRend.setDrawBarOutline(false);
        // use flat filled bar rather than rounded bar with sheen
        barRend.setBarPainter(new StandardBarPainter());
    }
    chart.getCategoryPlot().setRenderer(renderer);
    return chart;
}
Example 31
Project: jgrasstools-master  File: Scatter.java View source code
public void addAnnotation(String text, double x) {
    XYPlot plot = (XYPlot) getChart().getPlot();
    Color color = new Color(0, 0, 0, 100);
    Marker updateMarker = new ValueMarker(x, color, new BasicStroke(2f));
    plot.addDomainMarker(updateMarker);
    if (text != null) {
        XYTextAnnotation updateLabel = new XYTextAnnotation(text, x, 0);
        updateLabel.setRotationAnchor(TextAnchor.BASELINE_CENTER);
        updateLabel.setTextAnchor(TextAnchor.BASELINE_CENTER);
        updateLabel.setRotationAngle(-3.14 / 2);
        updateLabel.setPaint(Color.black);
        plot.addAnnotation(updateLabel);
    }
    setShapeLinesVisibility(plot);
}
Example 32
Project: jMemorize-master  File: DeckChartPanel.java View source code
private JFreeChart createChart() {
    m_dataset = createDefaultDataSet();
    JFreeChart chart = ChartFactory.createStackedBarChart3D(// chart title
    null, // domain axis label
    null, // range axis label //$NON-NLS-1$
    Localization.get("DeckChart.CARDS"), // data
    m_dataset, // the plot orientation
    PlotOrientation.VERTICAL, // include legend
    true, // tooltips
    true, // urls
    false);
    // setup legend
    // TODO we used to do this for the old jfreechar version, but it's not clear why.
    // can we get rid of it?
    LegendTitle legend = chart.getLegend();
    //        legend.setsetRenderingOrder(LegendRenderingOrder.REVERSE);
    legend.setItemFont(legend.getItemFont().deriveFont(11f));
    // setup plot
    CategoryPlot plot = (CategoryPlot) chart.getPlot();
    TickUnitSource tickUnits = NumberAxis.createIntegerTickUnits();
    //CHECK use locale
    plot.getRangeAxis().setStandardTickUnits(tickUnits);
    plot.setForegroundAlpha(0.99f);
    // setup renderer
    m_barRenderer = new MyBarRenderer();
    m_barRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    m_barRenderer.setItemLabelsVisible(true);
    m_barRenderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    plot.setRenderer(m_barRenderer);
    setSeriesPaint();
    return chart;
}
Example 33
Project: jrecruiter-master  File: ShowStatisticsAction.java View source code
private static JFreeChart createChart(final CategoryDataset categorydataset, final String chartTitle) {
    final JFreeChart chart = ChartFactory.createBarChart(chartTitle, "Jobs", "Number of Hits", categorydataset, PlotOrientation.VERTICAL, true, true, false);
    final CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
    categoryplot.setNoDataMessage("NO DATA!");
    chart.setBackgroundPaint(new Color(245, 245, 255));
    chart.setBorderPaint(new Color(204, 204, 204));
    chart.setBorderStroke(new BasicStroke(1f));
    final LegendTitle legend = chart.getLegend();
    legend.setWidth(1000);
    legend.setPosition(RectangleEdge.BOTTOM);
    final BlockBorder border = new BlockBorder(new Color(204, 204, 204));
    legend.setBorder(border);
    final CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
    categoryPlot.setBackgroundPaint(Color.WHITE);
    categoryPlot.setRangeGridlinePaint(new Color(204, 204, 204));
    categoryPlot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
    final NumberAxis numberaxis = (NumberAxis) categoryPlot.getRangeAxis();
    numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    final BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();
    renderer.setDrawBarOutline(true);
    final ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER);
    renderer.setPositiveItemLabelPosition(itemlabelposition);
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setItemLabelsVisible(true);
    return chart;
}
Example 34
Project: KukaWii-master  File: PiePlot.java View source code
/**
     * Draws the pie section labels in the simple form.
     *
     * @param g2  the graphics device.
     * @param keys  the section keys.
     * @param totalValue  the total value for all sections in the pie.
     * @param plotArea  the plot area.
     * @param pieArea  the area containing the pie.
     * @param state  the plot state.
     *
     * @since 1.0.7
     */
protected void drawSimpleLabels(Graphics2D g2, List keys, double totalValue, Rectangle2D plotArea, Rectangle2D pieArea, PiePlotState state) {
    Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f));
    Rectangle2D labelsArea = this.simpleLabelOffset.createInsetRectangle(pieArea);
    double runningTotal = 0.0;
    Iterator iterator = keys.iterator();
    while (iterator.hasNext()) {
        Comparable key = (Comparable) iterator.next();
        boolean include = true;
        double v = 0.0;
        Number n = getDataset().getValue(key);
        if (n == null) {
            include = !getIgnoreNullValues();
        } else {
            v = n.doubleValue();
            include = getIgnoreZeroValues() ? v > 0.0 : v >= 0.0;
        }
        if (include) {
            runningTotal = runningTotal + v;
            // work out the mid angle (0 - 90 and 270 - 360) = right,
            // otherwise left
            double mid = getStartAngle() + (getDirection().getFactor() * ((runningTotal - v / 2.0) * 360) / totalValue);
            Arc2D arc = new Arc2D.Double(labelsArea, getStartAngle(), mid - getStartAngle(), Arc2D.OPEN);
            int x = (int) arc.getEndPoint().getX();
            int y = (int) arc.getEndPoint().getY();
            PieSectionLabelGenerator labelGenerator = getLabelGenerator();
            if (labelGenerator == null) {
                continue;
            }
            String label = labelGenerator.generateSectionLabel(this.dataset, key);
            if (label == null) {
                continue;
            }
            g2.setFont(this.labelFont);
            FontMetrics fm = g2.getFontMetrics();
            Rectangle2D bounds = TextUtilities.getTextBounds(label, g2, fm);
            Rectangle2D out = this.labelPadding.createOutsetRectangle(bounds);
            Shape bg = ShapeUtilities.createTranslatedShape(out, x - bounds.getCenterX(), y - bounds.getCenterY());
            if (this.labelShadowPaint != null && this.shadowGenerator == null) {
                Shape shadow = ShapeUtilities.createTranslatedShape(bg, this.shadowXOffset, this.shadowYOffset);
                g2.setPaint(this.labelShadowPaint);
                g2.fill(shadow);
            }
            if (this.labelBackgroundPaint != null) {
                g2.setPaint(this.labelBackgroundPaint);
                g2.fill(bg);
            }
            if (this.labelOutlinePaint != null && this.labelOutlineStroke != null) {
                g2.setPaint(this.labelOutlinePaint);
                g2.setStroke(this.labelOutlineStroke);
                g2.draw(bg);
            }
            g2.setPaint(this.labelPaint);
            g2.setFont(this.labelFont);
            TextUtilities.drawAlignedString(getLabelGenerator().generateSectionLabel(getDataset(), key), g2, x, y, TextAnchor.CENTER);
        }
    }
    g2.setComposite(originalComposite);
}
Example 35
Project: nmonvisualizer-master  File: LineChartAnnotationDialog.java View source code
@Override
public void actionPerformed(ActionEvent e) {
    String line = lineType.getSelection().getActionCommand();
    String text = annotation.getText();
    if (text != null) {
        text = text.trim();
    }
    if ("Vertical".equals(line)) {
        ValueMarker marker = new DomainValueMarker(getX());
        marker.setLabelOffset(new RectangleInsets(5, 5, 5, 5));
        marker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
        marker.setLabel(text);
        formatMarker(marker);
        if (marker != null) {
            xyPlot.addDomainMarker(marker);
            firePropertyChange("annotation", null, marker);
        }
    } else if ("Horizontal".equals(line)) {
        ValueMarker marker = new RangeValueMarker(getY());
        marker.setLabelTextAnchor(TextAnchor.BASELINE_LEFT);
        marker.setLabel(text);
        formatMarker(marker);
        if (marker != null) {
            xyPlot.addRangeMarker(marker);
            firePropertyChange("annotation", null, marker);
        }
    } else if ("None".equals(line)) {
        if (!"".equals(text)) {
            XYTextAnnotation annotation = new XYTextAnnotation(text, getX(), getY());
            annotation.setFont(Styles.ANNOTATION_FONT);
            annotation.setPaint(Styles.ANNOTATION_COLOR);
            if (annotation != null) {
                xyPlot.addAnnotation(annotation);
                firePropertyChange("annotation", null, annotation);
            }
        }
    // else no annotation needed if no text
    } else {
        throw new IllegalStateException("unknown annotation line type");
    }
    dispose();
}
Example 36
Project: ouvidoria-master  File: PlotEnhancer.java View source code
private Plot enhancePlot(CategoryPlot plot, Map params) {
    String txt_meta = (String) params.get("txt_meta");
    Double targetValue = txt_meta == null || txt_meta.length() < 1 ? null : new Double(txt_meta);
    CategoryAxis categoryAxis = plot.getDomainAxis();
    categoryAxis.setCategoryMargin(.15d);
    categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    //.08dpi
    rangeAxis.setUpperMargin(.45d);
    rangeAxis.setLowerMargin(.02d);
    rangeAxis.setLabel(!"ext".equals(params.get("indicador")) ? "%" : "2".equals(params.get("sel_indicador")) ? "Tempo" : "Total");
    if (targetValue != null) {
        double tv = targetValue.doubleValue();
        Double factor = (Double) params.get("factor");
        if (factor != null) {
            tv *= factor.doubleValue();
        }
        if (rangeAxis.getUpperBound() < tv)
            rangeAxis.setUpperBound(tv);
        ValueMarker marker = new ValueMarker(tv);
        marker.setLabel("Meta");
        marker.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
        marker.setLabelAnchor(RectangleAnchor.LEFT);
        marker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
        marker.setPaint(new Color(222, 222, 255, 128));
        plot.addRangeMarker(marker, Layer.BACKGROUND);
    }
    CategoryItemRenderer renderer = plot.getRenderer();
    renderer.setItemLabelFont(new Font("SansSerif", Font.BOLD, 8));
    CategoryLabelGenerator clg = null;
    CategoryDataset dataset = plot.getDataset();
    if (dataset instanceof JDBCFlatCategoryDataset) {
        JDBCFlatCategoryDataset ds = (JDBCFlatCategoryDataset) dataset;
        clg = ds.getLabelGenerator();
        if (clg == null) {
            clg = new PercentCategoryLabelGenerator(100d / ds.getGrandTotal());
            PercentCategoryLabelGenerator pclg = (PercentCategoryLabelGenerator) clg;
            pclg.setPercentFormatter(NumberFormat.getNumberInstance());
            pclg.getValueFormatter().setMinimumFractionDigits(2);
            pclg.getValueFormatter().setMaximumFractionDigits(2);
            pclg.setFormatString("   {0}% ({1})");
        }
    }
    renderer.setLabelGenerator("true".equalsIgnoreCase((String) params.get("supressLabels")) ? null : clg);
    renderer.setItemLabelsVisible(!"true".equalsIgnoreCase((String) params.get("supressLabels")));
    ItemLabelPosition ilb_out = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2d);
    ItemLabelPosition ilb_line = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 4d);
    renderer.setPositiveItemLabelPosition(ilb_out);
    renderer.setNegativeItemLabelPosition(ilb_out);
    if (renderer instanceof BarRenderer3D) {
        plot.setForegroundAlpha(0.6f);
        BarRenderer3D barRenderer3D = (BarRenderer3D) renderer;
        barRenderer3D.setPositiveItemLabelPositionFallback(ilb_out);
        barRenderer3D.setItemMargin(0.01d);
        barRenderer3D.setMaxBarWidth(.4d);
    } else if (renderer instanceof LineAndShapeRenderer) {
        plot.setForegroundAlpha(0.9f);
        LineAndShapeRenderer lineRenderer = (LineAndShapeRenderer) renderer;
        lineRenderer.setPositiveItemLabelPosition(ilb_line);
    }
    setSeriesPaints(COLORS, renderer);
    return plot;
}
Example 37
Project: pentaho-reporting-master  File: CategoricalChartExpression.java View source code
protected void configureChart(final JFreeChart chart) {
    super.configureChart(chart);
    final CategoryPlot cpl = chart.getCategoryPlot();
    final CategoryItemRenderer renderer = cpl.getRenderer();
    if (StringUtils.isEmpty(getTooltipFormula()) == false) {
        renderer.setBaseToolTipGenerator(new FormulaCategoryTooltipGenerator(getRuntime(), getTooltipFormula()));
    }
    if (StringUtils.isEmpty(getUrlFormula()) == false) {
        renderer.setBaseItemURLGenerator(new FormulaCategoryURLGenerator(getRuntime(), getUrlFormula()));
    }
    if (this.categoricalLabelFormat != null) {
        final StandardCategoryItemLabelGenerator scilg;
        if (categoricalLabelDecimalFormat != null) {
            final DecimalFormat numFormat = new DecimalFormat(categoricalLabelDecimalFormat, new DecimalFormatSymbols(getRuntime().getResourceBundleFactory().getLocale()));
            numFormat.setRoundingMode(RoundingMode.HALF_UP);
            scilg = new StandardCategoryItemLabelGenerator(categoricalLabelFormat, numFormat);
        } else if (categoricalLabelDateFormat != null) {
            scilg = new StandardCategoryItemLabelGenerator(categoricalLabelFormat, new SimpleDateFormat(categoricalLabelDateFormat, getRuntime().getResourceBundleFactory().getLocale()));
        } else {
            final DecimalFormat formatter = new DecimalFormat();
            formatter.setDecimalFormatSymbols(new DecimalFormatSymbols(getRuntime().getResourceBundleFactory().getLocale()));
            scilg = new StandardCategoryItemLabelGenerator(categoricalLabelFormat, formatter);
        }
        renderer.setBaseItemLabelGenerator(scilg);
    }
    renderer.setBaseItemLabelsVisible(Boolean.TRUE.equals(getItemsLabelVisible()));
    if (getItemLabelFont() != null) {
        renderer.setBaseItemLabelFont(getItemLabelFont());
    }
    if (categoricalItemLabelRotation != null) {
        final ItemLabelPosition orgPosItemLabelPos = renderer.getBasePositiveItemLabelPosition();
        if (orgPosItemLabelPos == null) {
            final ItemLabelPosition pos2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, categoricalItemLabelRotation.doubleValue());
            renderer.setBasePositiveItemLabelPosition(pos2);
        } else {
            final ItemLabelPosition pos2 = new ItemLabelPosition(orgPosItemLabelPos.getItemLabelAnchor(), orgPosItemLabelPos.getTextAnchor(), orgPosItemLabelPos.getRotationAnchor(), categoricalItemLabelRotation.doubleValue());
            renderer.setBasePositiveItemLabelPosition(pos2);
        }
        final ItemLabelPosition orgNegItemLabelPos = renderer.getBaseNegativeItemLabelPosition();
        if (orgNegItemLabelPos == null) {
            final ItemLabelPosition pos2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER, TextAnchor.CENTER, categoricalItemLabelRotation.doubleValue());
            renderer.setBaseNegativeItemLabelPosition(pos2);
        } else {
            final ItemLabelPosition neg2 = new ItemLabelPosition(orgNegItemLabelPos.getItemLabelAnchor(), orgNegItemLabelPos.getTextAnchor(), orgNegItemLabelPos.getRotationAnchor(), categoricalItemLabelRotation.doubleValue());
            renderer.setBaseNegativeItemLabelPosition(neg2);
        }
    }
    final Font labelFont = Font.decode(getLabelFont());
    final CategoryAxis categoryAxis = cpl.getDomainAxis();
    categoryAxis.setLabelFont(labelFont);
    categoryAxis.setTickLabelFont(labelFont);
    if (getCategoryTitleFont() != null) {
        categoryAxis.setLabelFont(getCategoryTitleFont());
    }
    if (getCategoryTickFont() != null) {
        categoryAxis.setTickLabelFont(getCategoryTickFont());
    }
    if (maxCategoryLabelWidthRatio != null) {
        categoryAxis.setMaximumCategoryLabelWidthRatio(maxCategoryLabelWidthRatio.floatValue());
    }
    cpl.setDomainGridlinesVisible(showGridlines);
    if (labelRotation != null) {
        double angle = labelRotation.doubleValue();
        CategoryLabelPosition top = createUpRotationCategoryLabelPosition(PlaneDirection.TOP, angle);
        CategoryLabelPosition bottom = createUpRotationCategoryLabelPosition(PlaneDirection.BOTTOM, angle);
        CategoryLabelPosition left = createUpRotationCategoryLabelPosition(PlaneDirection.LEFT, angle);
        CategoryLabelPosition right = createUpRotationCategoryLabelPosition(PlaneDirection.RIGHT, angle);
        CategoryLabelPositions rotationLabelPositions = new CategoryLabelPositions(top, bottom, left, right);
        categoryAxis.setCategoryLabelPositions(rotationLabelPositions);
    }
    final String[] colors = getSeriesColor();
    for (int i = 0; i < colors.length; i++) {
        renderer.setSeriesPaint(i, parseColorFromString(colors[i]));
    }
    if (lowerMargin != null) {
        categoryAxis.setLowerMargin(lowerMargin.doubleValue());
    }
    if (upperMargin != null) {
        categoryAxis.setUpperMargin(upperMargin.doubleValue());
    }
    if (categoryMargin != null) {
        categoryAxis.setCategoryMargin(categoryMargin.doubleValue());
    }
    configureRangeAxis(cpl, labelFont);
}
Example 38
Project: PerformanceRegressionTest-master  File: GenerateOpsPerSecChart.java View source code
public void generateChart() throws Exception {
    if (!hasProcessed)
        throw new RuntimeException("Unable to generate chart before having run #process()");
    DefaultCategoryDataset dataset = generateDataset();
    BarRenderer3D barRenderer = new BarRenderer3D();
    barRenderer.setBaseItemLabelsVisible(true);
    barRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("###.#")));
    barRenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.TOP_CENTER));
    barRenderer.setItemMargin(0.06);
    CategoryAxis catAxis = new CategoryAxis("Bench Case");
    CategoryPlot basePlot = new CategoryPlot(dataset, catAxis, new NumberAxis("Operations Per Sec"), barRenderer);
    basePlot.setOrientation(PlotOrientation.VERTICAL);
    basePlot.setDataset(dataset);
    basePlot.getRangeAxis().setLowerBound(0);
    JFreeChart chart = new JFreeChart("Performance Chart", basePlot);
    Dimension dimensions = new Dimension(1600, 900);
    File chartFile = new File(outputFilename);
    if (performanceHasDegraded) {
        chart.setBackgroundPaint(Color.RED);
    }
    System.out.println("Saving chart to " + chartFile.getAbsolutePath());
    ChartUtilities.saveChartAsPNG(chartFile, chart, (int) dimensions.getWidth(), (int) dimensions.getHeight());
}
Example 39
Project: seqcode-master  File: ScatterPlot.java View source code
/**
     * Add a dataset to the plot
     * @param name  String
     * @param datasetMatrix  2D matrix
     * @param c	  Color
     * @param dotSize  int 
     * @param drawAnnotations  boolean
     */
public void addDataset(String name, Matrix datasetMatrix, Color c, int dotSize, boolean drawAnnotations, boolean drawConnectingLines, boolean drawDots) {
    data.loadDataset(name, datasetMatrix);
    this.plot.setDataset(data.getDatasetIndex(), data.getDataset(data.getDatasetIndex()));
    data.editRenderer(data.getDatasetIndex(), dotSize, c, drawConnectingLines, drawDots);
    this.plot.setRenderer(data.getDatasetIndex(), data.getRenderer(data.getDatasetIndex()));
    if (drawAnnotations) {
        List<XYTextAnnotation> annots = data.getAnnotations(data.getDatasetIndex(), 0.0, 0.0, TextAnchor.BOTTOM_RIGHT, dataLabelFontSize, Font.PLAIN, c);
        for (XYTextAnnotation a : annots) plot.addAnnotation(a);
    }
}
Example 40
Project: PokerbotServer-master  File: BankrollGraphUI.java View source code
/**
	 * creates a JFreeChart from all the data
	 * @param playerToBankRoll
	 * @param xySeriesCollection
	 * @return
	 */
private JFreeChart createJFreeChart(Map<String, Double> playerToBankRoll, XYSeriesCollection xySeriesCollection, int snapshotCurrentGamesPlayed) {
    final JFreeChart chart = ChartFactory.createXYLineChart("Bankroll after " + (currentSeatPermutation + 1) + " seat permutation(s)", "Games", "Bankroll", xySeriesCollection, PlotOrientation.VERTICAL, true, false, false);
    chart.setBackgroundPaint(Color.WHITE);
    chart.getXYPlot().setBackgroundPaint(Color.WHITE);
    //.get.setOutlineStroke()
    XYItemRenderer xyir = chart.getXYPlot().getRenderer();
    try {
        xyir.setBaseStroke(new BasicStroke(3));
        // bug workaround
        ((AbstractRenderer) xyir).setAutoPopulateSeriesStroke(false);
    //			xyir.setSeriesStroke(new BasicStroke(5));
    //			xyir.setSeriesStroke(0, ); //series line style
    } catch (Exception e) {
        System.err.println("Error setting style: " + e);
    }
    // create some Pointers to the final bankrolls
    for (String playerName : playerNames) {
        double finalBankroll = playerToBankRoll.get(playerName);
        DecimalFormat moneyFormat = new DecimalFormat("0.00");
        String resultString = playerName + ": $" + moneyFormat.format(finalBankroll) + " ($" + moneyFormat.format(finalBankroll / (snapshotCurrentGamesPlayed / 100D)) + "/100)";
        final XYPointerAnnotation pointer = new XYPointerAnnotation(resultString, Math.min(snapshotCurrentGamesPlayed, numGames), finalBankroll, Math.PI * 5.9 / 6);
        pointer.setBaseRadius(130.0);
        pointer.setTipRadius(1.0);
        pointer.setLabelOffset(10.0);
        pointer.setOutlineVisible(true);
        pointer.setBackgroundPaint(Color.WHITE);
        chart.getXYPlot().addAnnotation(pointer);
    }
    // after the first permutation the next permutations get
    // merges with the existing data. We show a marker, what
    // data is already merged
    final Marker permutationEnd = new ValueMarker(snapshotCurrentGamesPlayed % numGames);
    permutationEnd.setLabel((currentSeatPermutation + 1) + " permutation(s)");
    permutationEnd.setLabelAnchor(RectangleAnchor.TOP_LEFT);
    permutationEnd.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    chart.getXYPlot().addDomainMarker(permutationEnd);
    return chart;
}
Example 41
Project: compomics-utilities-master  File: VennDiagramPanel.java View source code
// </editor-fold>//GEN-END:initComponents
/**
     * Update the plot.
     */
public void updatePlot() {
    plotPanel.removeAll();
    tooltipToDatasetMap = new HashMap<String, String>();
    DefaultXYZDataset xyzDataset = new DefaultXYZDataset();
    JFreeChart chart = ChartFactory.createBubbleChart(null, "X", "Y", xyzDataset, PlotOrientation.VERTICAL, false, true, false);
    XYPlot plot = chart.getXYPlot();
    if (currentVennDiagramType == VennDiagramType.ONE_WAY) {
        plot.getRangeAxis().setRange(0.86, 1.24);
        plot.getDomainAxis().setRange(0.85, 1.25);
    } else if (currentVennDiagramType == VennDiagramType.TWO_WAY) {
        plot.getRangeAxis().setRange(0.86, 1.24);
        plot.getDomainAxis().setRange(0.85, 1.25);
    } else if (currentVennDiagramType == VennDiagramType.THREE_WAY) {
        plot.getRangeAxis().setRange(0.86, 1.24);
        plot.getDomainAxis().setRange(0.85, 1.25);
    } else {
        plot.getRangeAxis().setRange(-0.04, 0.6);
        plot.getDomainAxis().setRange(-0.08, 0.7);
    }
    plot.getRangeAxis().setVisible(false);
    plot.getDomainAxis().setVisible(false);
    double radius = 0.1;
    Ellipse2D ellipse = new Ellipse2D.Double(1 - radius, 1 - radius, radius + radius, radius + radius);
    // @TODO: make it possible set the line color and width?
    XYShapeAnnotation xyShapeAnnotation = new XYShapeAnnotation(ellipse, new BasicStroke(2f), new Color(140, 140, 140, 150), datasetAColor);
    plot.addAnnotation(xyShapeAnnotation);
    if (currentVennDiagramType == VennDiagramType.TWO_WAY || currentVennDiagramType == VennDiagramType.THREE_WAY) {
        ellipse = new Ellipse2D.Double(1 - radius + 0.1, 1 - radius, radius + radius, radius + radius);
        xyShapeAnnotation = new XYShapeAnnotation(ellipse, new BasicStroke(2f), new Color(140, 140, 140, 150), datasetBColor);
        plot.addAnnotation(xyShapeAnnotation);
    }
    if (currentVennDiagramType == VennDiagramType.THREE_WAY) {
        ellipse = new Ellipse2D.Double(1 - radius + 0.05, 1 - radius + 0.1, radius + radius, radius + radius);
        xyShapeAnnotation = new XYShapeAnnotation(ellipse, new BasicStroke(2f), new Color(140, 140, 140, 150), datasetCColor);
        plot.addAnnotation(xyShapeAnnotation);
    }
    XYTextAnnotation anotation;
    if (currentVennDiagramType == VennDiagramType.ONE_WAY) {
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("a").size(), 1.0, 1.0);
        anotation.setToolTipText(groupNames.get("a"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "a");
        // legend
        if (showLegend) {
            anotation = new XYTextAnnotation(groupNames.get("a"), legendDatasetAThreeWay.getX(), legendDatasetAThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
        }
    } else if (currentVennDiagramType == VennDiagramType.TWO_WAY) {
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("a").size(), 0.96, 1.0);
        anotation.setToolTipText(groupNames.get("a"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "a");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("b").size(), 1.14, 1.0);
        anotation.setToolTipText(groupNames.get("b"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "b");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ab").size(), 1.05, 1.0);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ab");
        // legend
        if (showLegend) {
            anotation = new XYTextAnnotation(groupNames.get("a"), legendDatasetAThreeWay.getX(), legendDatasetAThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("b"), legendDatasetBThreeWay.getX(), legendDatasetBThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
        }
    } else if (currentVennDiagramType == VennDiagramType.THREE_WAY) {
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("a").size(), 0.96, 0.97);
        anotation.setToolTipText(groupNames.get("a"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "a");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("b").size(), 1.14, 0.97);
        anotation.setToolTipText(groupNames.get("b"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "b");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ab").size(), 1.05, 0.97);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ab");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("c").size(), 1.05, 1.14);
        anotation.setToolTipText(groupNames.get("c"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "c");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ac").size(), 0.99, 1.065);
        anotation.setToolTipText("<html>" + groupNames.get("a") + "  ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ac");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("bc").size(), 1.11, 1.065);
        anotation.setToolTipText("<html>" + groupNames.get("b") + " ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "bc");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("abc").size(), 1.05, 1.036);
        anotation.setToolTipText("<html>" + groupNames.get("a") + "  ∩ " + groupNames.get("b") + " ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "abc");
        // legend
        if (showLegend) {
            anotation = new XYTextAnnotation(groupNames.get("a"), legendDatasetAThreeWay.getX(), legendDatasetAThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("b"), legendDatasetBThreeWay.getX(), legendDatasetBThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("c"), legendDatasetCThreeWay.getX(), legendDatasetCThreeWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
        }
    } else if (currentVennDiagramType == VennDiagramType.FOUR_WAY) {
        XYBoxAnnotation anotation2 = new XYBoxAnnotation(0, 0, 0.2, 0.5, new BasicStroke(2), Color.LIGHT_GRAY, datasetAColor);
        plot.addAnnotation(anotation2);
        anotation2 = new XYBoxAnnotation(0.1, 0, 0.3, 0.4, new BasicStroke(2), Color.LIGHT_GRAY, datasetBColor);
        plot.addAnnotation(anotation2);
        anotation2 = new XYBoxAnnotation(0, 0.1, 0.4, 0.3, new BasicStroke(2), Color.LIGHT_GRAY, datasetCColor);
        plot.addAnnotation(anotation2);
        anotation2 = new XYBoxAnnotation(0, 0, 0.5, 0.2, new BasicStroke(2), Color.LIGHT_GRAY, datasetDColor);
        plot.addAnnotation(anotation2);
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("a").size(), 0.15, 0.45);
        anotation.setToolTipText(groupNames.get("a"));
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "a");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ab").size(), 0.15, 0.35);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ab");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("abc").size(), 0.15, 0.25);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + " ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "abc");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("abcd").size(), 0.15, 0.15);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + " ∩ " + groupNames.get("c") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "abcd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("abd").size(), 0.15, 0.05);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("b") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "abd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ac").size(), 0.05, 0.25);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ac");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("acd").size(), 0.05, 0.15);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("c") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "acd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("ad").size(), 0.05, 0.05);
        anotation.setToolTipText("<html>" + groupNames.get("a") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "ad");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("b").size(), 0.25, 0.35);
        anotation.setToolTipText("<html>" + groupNames.get("b") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "b");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("bc").size(), 0.25, 0.25);
        anotation.setToolTipText("<html>" + groupNames.get("b") + " ∩ " + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "bc");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("bcd").size(), 0.25, 0.15);
        anotation.setToolTipText("<html>" + groupNames.get("b") + " ∩ " + groupNames.get("c") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "bcd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("bd").size(), 0.25, 0.05);
        anotation.setToolTipText("<html>" + groupNames.get("b") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "bd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("c").size(), 0.35, 0.25);
        anotation.setToolTipText("<html>" + groupNames.get("c") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "c");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("cd").size(), 0.35, 0.15);
        anotation.setToolTipText("<html>" + groupNames.get("c") + " ∩ " + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "cd");
        anotation = new XYTextAnnotation("" + vennDiagramResults.get("d").size(), 0.45, 0.15);
        anotation.setToolTipText("<html>" + groupNames.get("d") + "</html>");
        anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeValues));
        plot.addAnnotation(anotation);
        tooltipToDatasetMap.put(anotation.getToolTipText(), "d");
        // legend
        if (showLegend) {
            anotation = new XYTextAnnotation(groupNames.get("a"), legendDatasetAFourWay.getX(), legendDatasetAFourWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("b"), legendDatasetBFourWay.getX(), legendDatasetBFourWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("c"), legendDatasetCFourWay.getX(), legendDatasetCFourWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
            anotation = new XYTextAnnotation(groupNames.get("d"), legendDatasetDFourWay.getX(), legendDatasetDFourWay.getY());
            anotation.setTextAnchor(TextAnchor.BASELINE_LEFT);
            anotation.setFont(new Font(anotation.getFont().getFontName(), Font.BOLD, fontSizeLegend));
            plot.addAnnotation(anotation);
        }
    }
    // set up the renderer
    XYBubbleRenderer renderer = new XYBubbleRenderer(XYBubbleRenderer.SCALE_ON_RANGE_AXIS);
    renderer.setBaseToolTipGenerator(new StandardXYZToolTipGenerator());
    plot.setRenderer(renderer);
    // make all datapoints semitransparent
    plot.setForegroundAlpha(0.5f);
    // remove space before/after the domain axis
    plot.getDomainAxis().setUpperMargin(0);
    plot.getDomainAxis().setLowerMargin(0);
    plot.setRangeGridlinePaint(Color.black);
    // hide unwanted chart details
    plot.setDomainGridlinesVisible(false);
    plot.setRangeGridlinesVisible(false);
    chart.getPlot().setOutlineVisible(false);
    // set background color
    chart.getPlot().setBackgroundPaint(Color.WHITE);
    chart.setBackgroundPaint(Color.WHITE);
    chartPanel = new ChartPanel(chart);
    // disable the pop up menu
    chartPanel.setPopupMenu(null);
    chartPanel.setBackground(Color.WHITE);
    // add the plot to the chart
    plotPanel.add(chartPanel);
    plotPanel.revalidate();
    plotPanel.repaint();
    // add chart mouse listener
    chartPanel.addChartMouseListener(new ChartMouseListener() {

        public void chartMouseClicked(ChartMouseEvent cme) {
            mouseClickedInChart(cme);
        }

        public void chartMouseMoved(ChartMouseEvent cme) {
            mouseMovedInChart(cme);
        }
    });
    // add more chart mouse listeners
    chartPanel.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent e) {
            super.mouseClicked(e);
        }
    });
}
Example 42
Project: cyclos-master  File: ChartPostProcessorImpl.java View source code
@SuppressWarnings("rawtypes")
private void setMarkers(final CategoryPlot plot, final Map params) {
    final Marker[] domainMarkers = (Marker[]) params.get("domainMarkers");
    // this method may be extended for range markers in future.
    if (domainMarkers != null && domainMarkers.length > 0) {
        for (final Marker marker : domainMarkers) {
            final CategoryMarker cmarker = (CategoryMarker) marker;
            cmarker.setDrawAsLine(true);
            if (cmarker.getLabel() != null) {
                cmarker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
                cmarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
            }
            plot.addDomainMarker(cmarker);
        }
    }
}
Example 43
Project: eurocarbdb-master  File: ProfilesComparisonReportChartCanvas.java View source code
private void createChart() {
    // create dataset
    theDataset = createDataset();
    // create axis
    CategoryAxis categoryAxis = new CategoryAxis("");
    categoryAxis.setCategoryLabelPositions(org.jfree.chart.axis.CategoryLabelPositions.UP_45);
    ValueAxis valueAxis = new NumberAxis("Normalized Intensities");
    // create renderer
    CategoryItemRenderer renderer = null;
    if (theOptions.REPRESENTATION == theOptions.BARS)
        renderer = new org.jfree.chart.renderer.category.BarRenderer();
    else if (theOptions.REPRESENTATION == theOptions.ERRORBARS)
        renderer = new org.jfree.chart.renderer.category.StatisticalBarRenderer();
    else if (theOptions.REPRESENTATION == theOptions.DISTRIBUTIONS)
        renderer = new org.jfree.chart.renderer.category.ScatterRenderer();
    ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
    renderer.setBasePositiveItemLabelPosition(position1);
    ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
    renderer.setBaseNegativeItemLabelPosition(position2);
    // create plot
    thePlot = new CategoryPlot(theDataset, categoryAxis, valueAxis, renderer);
    thePlot.setOrientation(org.jfree.chart.plot.PlotOrientation.VERTICAL);
    // add mean values 
    if (theOptions.REPRESENTATION == theOptions.DISTRIBUTIONS) {
        thePlot.setDataset(1, createMeansDataset());
        thePlot.mapDatasetToRangeAxis(1, 0);
        CategoryItemRenderer lr = new org.jfree.chart.renderer.category.LevelRenderer();
        lr.setPaint(Color.black);
        thePlot.setRenderer(1, lr);
    }
    // create chart
    theChart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, thePlot, true);
    theChart.setBackgroundPaint(Color.white);
    theChart.setBorderVisible(false);
}
Example 44
Project: jajuk-master  File: StatView.java View source code
/**
   * Collection size bars.
   * 
   * @return the chart
   */
private ChartPanel createCollectionSize() {
    try {
        final DateFormat additionFormatter = UtilString.getAdditionDateFormatter();
        CategoryDataset cdata = null;
        JFreeChart jfchart = null;
        // number of mounts we show, mounts
        int iMonthsNumber = 5;
        // before are set together in 'before'
        long lSizeByMonth[] = new long[iMonthsNumber + 1];
        // contains size ( in Go ) for each month, first cell is before
        // data
        int[] iMonths = getMonths(iMonthsNumber);
        ReadOnlyIterator<Track> tracks = TrackManager.getInstance().getTracksIterator();
        while (tracks.hasNext()) {
            Track track = tracks.next();
            int i = Integer.parseInt(additionFormatter.format(track.getDiscoveryDate())) / 100;
            for (int j = 0; j < iMonthsNumber + 1; j++) {
                if (i <= iMonths[j]) {
                    lSizeByMonth[j] += track.getTotalSize();
                }
            }
        }
        double[][] data = new double[1][iMonthsNumber + 1];
        for (int i = 0; i < iMonthsNumber + 1; i++) {
            data[0][i] = (double) lSizeByMonth[i] / 1073741824;
        }
        cdata = DatasetUtilities.createCategoryDataset(new String[] { "" }, getMonthsLabels(iMonthsNumber), data);
        // chart, use local copy of method to use better format string for
        // tooltips
        jfchart = createBarChart3D(// chart
        Messages.getString("StatView.7"), // domain axis label
        Messages.getString("StatView.8"), // range axis label
        Messages.getString("StatView.9"), // data
        cdata, // orientation
        PlotOrientation.VERTICAL, // include legend
        false, // tooltips
        true, // urls
        false, "{1} = {2} GB");
        CategoryPlot plot = jfchart.getCategoryPlot();
        CategoryAxis axis = plot.getDomainAxis();
        new CategoryLabelPosition(RectangleAnchor.TOP, TextBlockAnchor.TOP_RIGHT, TextAnchor.TOP_RIGHT, -Math.PI / 8.0, CategoryLabelWidthType.CATEGORY, 0);
        axis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);
        // set the background color for the chart...
        plot.setNoDataMessage(Messages.getString("StatView.10"));
        plot.setForegroundAlpha(0.5f);
        plot.setBackgroundAlpha(0.5f);
        // plot.setBackgroundImage(IconLoader.IMAGES_STAT_PAPER).getImage());
        return new ChartPanel(jfchart);
    } catch (Exception e) {
        Log.error(e);
        return null;
    }
}
Example 45
Project: novelang-master  File: Grapher.java View source code
private static void addAnnotations(final XYPlot plot, final MeasurementBundle<TimeMeasurement> measurementBundle) {
    final int measurementCount = measurementBundle.getMeasurementCount();
    final String annotationText;
    annotationText = calculateTerminationText(measurementBundle.getTermination());
    if (annotationText != null && measurementCount > 0) {
        final TimeMeasurement measurement = measurementBundle.getMeasurement(measurementCount - 1);
        if (measurement != null) {
            final XYTextAnnotation annotation = new XYTextAnnotation(annotationText, (double) measurementCount, convertToYValue(measurement));
            annotation.setTextAnchor(TextAnchor.BOTTOM_RIGHT);
            plot.addAnnotation(annotation);
        }
    }
}
Example 46
Project: openrocket-master  File: SimulationPlot.java View source code
@Override
public void drawDomainMarker(Graphics2D g2, XYPlot plot, ValueAxis domainAxis, Marker marker, Rectangle2D dataArea) {
    if (!(marker instanceof ValueMarker)) {
        // Use parent for all others
        super.drawDomainMarker(g2, plot, domainAxis, marker, dataArea);
        return;
    }
    /*
			 * Draw the normal marker, but with rotated text.
			 * Copied from the overridden method.
			 */
    ValueMarker vm = (ValueMarker) marker;
    double value = vm.getValue();
    Range range = domainAxis.getRange();
    if (!range.contains(value)) {
        return;
    }
    double v = domainAxis.valueToJava2D(value, dataArea, plot.getDomainAxisEdge());
    PlotOrientation orientation = plot.getOrientation();
    Line2D line = null;
    if (orientation == PlotOrientation.HORIZONTAL) {
        line = new Line2D.Double(dataArea.getMinX(), v, dataArea.getMaxX(), v);
    } else {
        line = new Line2D.Double(v, dataArea.getMinY(), v, dataArea.getMaxY());
    }
    final Composite originalComposite = g2.getComposite();
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, marker.getAlpha()));
    g2.setPaint(marker.getPaint());
    g2.setStroke(marker.getStroke());
    g2.draw(line);
    String label = marker.getLabel();
    RectangleAnchor anchor = marker.getLabelAnchor();
    if (label != null) {
        Font labelFont = marker.getLabelFont();
        g2.setFont(labelFont);
        g2.setPaint(marker.getLabelPaint());
        Point2D coordinates = calculateDomainMarkerTextAnchorPoint(g2, orientation, dataArea, line.getBounds2D(), marker.getLabelOffset(), LengthAdjustmentType.EXPAND, anchor);
        // Changed:
        TextAnchor textAnchor = TextAnchor.TOP_RIGHT;
        TextUtilities.drawRotatedString(label, g2, (float) coordinates.getX() + 2, (float) coordinates.getY(), textAnchor, -Math.PI / 2, textAnchor);
    }
    g2.setComposite(originalComposite);
}
Example 47
Project: toobs-master  File: ChartUtil.java View source code
public static void configureDomainItemLabels(BasePlot plot, AbstractRenderer renderer, Map params, boolean is3D) {
    if (plot.getShowDomainItemLabels()) {
        String orientation = ParameterUtil.resolveParam(plot.getOrientation(), params, "horizontal")[0];
        if (orientation.equals("horizontal")) {
            ItemLabelPosition position1;
            if (is3D) {
                position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE2, TextAnchor.CENTER_LEFT);
                renderer.setItemLabelAnchorOffset(15.0d);
            } else {
                position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
            }
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
            renderer.setNegativeItemLabelPosition(position2);
        } else if (orientation.equals("vertical")) {
            ItemLabelPosition position1;
            if (is3D) {
                position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE1, TextAnchor.BOTTOM_CENTER);
                renderer.setItemLabelAnchorOffset(10.0d);
            } else {
                position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
            }
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
            renderer.setNegativeItemLabelPosition(position2);
        }
        renderer.setBaseItemLabelsVisible(true);
        ((CategoryItemRenderer) renderer).setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    }
}
Example 48
Project: ewcms-master  File: ChartFactory.java View source code
public byte[] export(ChartReport report, Map<String, String> pageParams) throws Exception {
    if (report == null) {
        return null;
    }
    DefaultCategoryDataset dataset = buildDataset(report, pageParams);
    java.awt.Font titleFont = new java.awt.Font(report.getFontName(), report.getFontStyle(), report.getFontSize());
    String chartTitle = report.getChartTitle();
    chartTitle = replaceParam(pageParams, report.getParameters(), chartTitle, false);
    String horizAxisLabel = report.getHorizAxisLabel();
    horizAxisLabel = replaceParam(pageParams, report.getParameters(), horizAxisLabel, false);
    String vertAxisLabel = report.getVertAxisLabel();
    vertAxisLabel = replaceParam(pageParams, report.getParameters(), vertAxisLabel, false);
    Boolean showLegend = report.getShowLegend();
    Boolean showTooltips = report.getShowTooltips();
    Boolean drillThroughEnabled = false;
    ChartReport.Type chartType = report.getType();
    CategoryURLGenerator urlGenerator = null;
    JFreeChart chart = null;
    switch(chartType) {
        case VERTBAR:
            chart = ChartGenerationService.createBarChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case VERTBAR3D:
            chart = ChartGenerationService.createBarChart3D(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case HORIZBAR:
            chart = ChartGenerationService.createBarChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case HORIZBAR3D:
            chart = ChartGenerationService.createBarChart3D(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case STACKEDVERTBAR:
            chart = ChartGenerationService.createStackedBarChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case STACKEDVERTBAR3D:
            chart = ChartGenerationService.createStackedBarChart3D(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case STACKEDHORIZBAR:
            chart = ChartGenerationService.createStackedBarChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case STACKEDHORIZBAR3D:
            chart = ChartGenerationService.createStackedBarChart3D(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case VERTLINE:
            chart = ChartGenerationService.createLineChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case HORIZLINE:
            chart = ChartGenerationService.createLineChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case VERTAREA:
            chart = ChartGenerationService.createAreaChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case HORIZAREA:
            chart = ChartGenerationService.createAreaChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case VERTSTACKEDAREA:
            chart = ChartGenerationService.createStackedAreaChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.VERTICAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case HORIZSTACKEDAREA:
            chart = ChartGenerationService.createStackedAreaChart(chartTitle, titleFont, horizAxisLabel, vertAxisLabel, dataset, PlotOrientation.HORIZONTAL, showLegend, showTooltips, drillThroughEnabled, urlGenerator);
            break;
        case PIEBYCOLUMN:
            chart = ChartGenerationService.createPieChart(chartTitle, titleFont, dataset, TableOrder.BY_COLUMN, showLegend, showTooltips, drillThroughEnabled, null);
            break;
        case PIEBYROW:
            chart = ChartGenerationService.createPieChart(chartTitle, titleFont, dataset, TableOrder.BY_ROW, showLegend, showTooltips, drillThroughEnabled, null);
            break;
        case PIEBYCOLUMN3D:
            chart = ChartGenerationService.create3DPieChart(chartTitle, titleFont, dataset, TableOrder.BY_COLUMN, showLegend, showTooltips, drillThroughEnabled, null);
            break;
        case PIEBYROW3D:
            chart = ChartGenerationService.create3DPieChart(chartTitle, titleFont, dataset, TableOrder.BY_ROW, showLegend, showTooltips, drillThroughEnabled, null);
            break;
        default:
            throw new BaseException("一个未定义的图表类型", "一个未定义的图表类型");
    }
    try {
        Integer bgColorR = report.getBgColorR();
        Integer bgColorG = report.getBgColorG();
        Integer bgColorB = report.getBgColorB();
        chart.setBackgroundPaint(new java.awt.Color(bgColorR, bgColorG, bgColorB));
        String axisFontName = report.getAxisFontName();
        Integer axisFontStyle = report.getAxisFontStyle();
        Integer axisFontSize = report.getAxisFontSize();
        java.awt.Font axisFont = new java.awt.Font(axisFontName, axisFontStyle, axisFontSize);
        String axisTickFontName = report.getAxisTickFontName();
        Integer axisTickFontStyle = report.getAxisTickFontStyle();
        Integer axisTickFontSize = report.getAxisTickFontSize();
        java.awt.Font axisTickFont = new java.awt.Font(axisTickFontName, axisTickFontStyle, axisTickFontSize);
        String legendFontName = report.getLegendFontName();
        Integer legendFontStyle = report.getLegendFontStyle();
        Integer legendFontSize = report.getLegendFontSize();
        java.awt.Font legendFont = new java.awt.Font(legendFontName, legendFontStyle, legendFontSize);
        Integer tickLabelRotate = report.getTickLabelRotate();
        String dataFontName = report.getDataFontName();
        Integer dataFontStyle = report.getDataFontStyle();
        Integer dataFontSize = report.getDataFontSize();
        java.awt.Font dataFont = new java.awt.Font(dataFontName, dataFontStyle, dataFontSize);
        Plot plot = chart.getPlot();
        if (!(plot instanceof MultiplePiePlot)) {
            CategoryPlot categoryPlot = chart.getCategoryPlot();
            CategoryItemRenderer renderer = categoryPlot.getRenderer();
            renderer.setBaseItemLabelGenerator(new LabelGenerator(0.0));
            renderer.setBaseItemLabelFont(dataFont);
            renderer.setBaseItemLabelsVisible(true);
            if (chartType == ChartReport.Type.VERTLINE || chartType == ChartReport.Type.HORIZLINE) {
                LineAndShapeRenderer lineRenderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
                lineRenderer.setBaseShapesVisible(true);
                lineRenderer.setDrawOutlines(true);
                lineRenderer.setUseFillPaint(true);
            }
        }
        if (plot instanceof CategoryPlot) {
            CategoryPlot catPlot = (CategoryPlot) plot;
            catPlot.getDomainAxis().setLabelFont(axisFont);
            catPlot.getRangeAxis().setLabelFont(axisFont);
            catPlot.getDomainAxis().setTickLabelFont(axisTickFont);
            catPlot.getRangeAxis().setTickLabelFont(axisTickFont);
            catPlot.getDomainAxis().setMaximumCategoryLabelWidthRatio(100.0f);
            double angle = -2.0 * Math.PI / 360.0 * (double) tickLabelRotate;
            CategoryLabelPositions oldp = catPlot.getDomainAxis().getCategoryLabelPositions();
            CategoryLabelPositions newp = new CategoryLabelPositions(oldp.getLabelPosition(RectangleEdge.TOP), new CategoryLabelPosition(RectangleAnchor.TOP, TextBlockAnchor.TOP_RIGHT, TextAnchor.TOP_RIGHT, angle, CategoryLabelWidthType.RANGE, 0.0f), oldp.getLabelPosition(RectangleEdge.LEFT), oldp.getLabelPosition(RectangleEdge.RIGHT));
            catPlot.getDomainAxis().setCategoryLabelPositions(newp);
        } else if (plot instanceof PiePlot3D) {
            PiePlot3D piePlot = (PiePlot3D) plot;
            piePlot.setLabelFont(axisFont);
            piePlot.setDirection(org.jfree.util.Rotation.CLOCKWISE);
            piePlot.setForegroundAlpha(0.5f);
            piePlot.setNoDataMessage("无数�显示");
        } else if (plot instanceof PiePlot) {
            PiePlot piePlot = (PiePlot) plot;
            piePlot.setLabelFont(axisFont);
        }
        LegendTitle legend = (LegendTitle) chart.getLegend();
        if (legend != null) {
            legend.setItemFont(legendFont);
            RectangleEdge legendRectEdge = RectangleEdge.BOTTOM;
            Integer legendPosition = report.getLegendPosition();
            switch(legendPosition) {
                case 0:
                    legendRectEdge = RectangleEdge.LEFT;
                    break;
                case 1:
                    legendRectEdge = RectangleEdge.TOP;
                    break;
                case 2:
                    legendRectEdge = RectangleEdge.RIGHT;
                    break;
                case 3:
                    legendRectEdge = RectangleEdge.BOTTOM;
                    break;
            }
            legend.setPosition(legendRectEdge);
        }
    } catch (Exception e) {
        logger.error("Chart Export Exception", e);
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ChartUtilities.writeChartAsPNG(out, chart, report.getChartWidth(), report.getChartHeight());
    return out.toByteArray();
}
Example 49
Project: ice-master  File: BasicWeeklyCostEmailService.java View source code
private File createImage(ApplicationGroup appgroup) throws IOException {
    Map<String, Double> costs = Maps.newHashMap();
    DateTime end = new DateTime(DateTimeZone.UTC).withDayOfWeek(1).withMillisOfDay(0);
    Interval interval = new Interval(end.minusWeeks(numWeeks), end);
    for (Product product : products) {
        List<ResourceGroup> resourceGroups = getResourceGroups(appgroup, product);
        if (resourceGroups.size() == 0) {
            continue;
        }
        DataManager dataManager = config.managers.getCostManager(product, ConsolidateType.weekly);
        if (dataManager == null) {
            continue;
        }
        TagLists tagLists = new TagLists(accounts, regions, null, Lists.newArrayList(product), null, null, resourceGroups);
        Map<Tag, double[]> data = dataManager.getData(interval, tagLists, TagType.Product, AggregateType.none, false);
        for (Tag tag : data.keySet()) {
            for (int week = 0; week < numWeeks; week++) {
                String key = tag + "|" + week;
                if (costs.containsKey(key))
                    costs.put(key, data.get(tag)[week] + costs.get(key));
                else
                    costs.put(key, data.get(tag)[week]);
            }
        }
    }
    boolean hasData = false;
    for (Map.Entry<String, Double> entry : costs.entrySet()) {
        if (!entry.getKey().contains("monitor") && entry.getValue() != null && entry.getValue() >= 0.1) {
            hasData = true;
            break;
        }
    }
    if (!hasData)
        return null;
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    for (Product product : products) {
        for (int week = 0; week < numWeeks; week++) {
            String weekStr = String.format("%s - %s week", formatter.print(end.minusWeeks(numWeeks - week)).substring(5), formatter.print(end.minusWeeks(numWeeks - week - 1)).substring(5));
            dataset.addValue(costs.get(product + "|" + week), product.name, weekStr);
        }
    }
    JFreeChart chart = ChartFactory.createBarChart3D(appgroup.getDisplayName() + " Weekly AWS Costs", "", "Costs", dataset, PlotOrientation.VERTICAL, true, false, false);
    CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
    BarRenderer3D renderer = (BarRenderer3D) categoryplot.getRenderer();
    renderer.setItemLabelAnchorOffset(10.0);
    TextTitle title = chart.getTitle();
    title.setFont(title.getFont().deriveFont((title.getFont().getSize() - 3)));
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator() {

        public java.lang.String generateLabel(org.jfree.data.category.CategoryDataset dataset, int row, int column) {
            return costFormatter.format(dataset.getValue(row, column));
        }
    });
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
    NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
    numberaxis.setNumberFormatOverride(costFormatter);
    BufferedImage image = chart.createBufferedImage(1200, 400);
    File outputfile = File.createTempFile("awscost", "png");
    ImageIO.write(image, "png", outputfile);
    return outputfile;
}
Example 50
Project: JadexPlayer-master  File: ChartCanvas.java View source code
/**
	 * An option for the barchart to display labels, even if they dont fit in
	 * the bar.
	 * 
	 * @param forceLabels <code>true</code> if labels are forced to
	 * bedisplayed regardless of their size.
	 */
public void setForceLabels(boolean forceLabels) {
    this.forceLabels = forceLabels;
    // sanity check
    if (chartType == CHARTTYPE_PIECHART) {
        return;
    }
    BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
    if (forceLabels) {
        ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0D);
        renderer.setPositiveItemLabelPositionFallback(itemlabelposition);
        renderer.setNegativeItemLabelPositionFallback(itemlabelposition);
    } else {
        renderer.setNegativeItemLabelPositionFallback(null);
        renderer.setPositiveItemLabelPositionFallback(null);
    }
}
Example 51
Project: rapidminer-5-master  File: ParetoChartPlotter.java View source code
public void paintParetoChart(Graphics graphics) {
    prepareData();
    JFreeChart chart = createChart();
    if (chart != null) {
        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);
        chart.getPlot().setBackgroundPaint(Color.WHITE);
        // bar renderer --> own 3D effect
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        // renderer.setBarPainter(new StandardBarPainter());
        renderer.setBarPainter(new RapidBarPainter());
        renderer.setSeriesPaint(0, getColorProvider().getPointColor(1));
        // labels on top of bars
        Map<String, String> barItemLabels = new HashMap<String, String>();
        Map<String, String> cumulativeItemLabels = new HashMap<String, String>();
        int groupSum = 0;
        int totalSum = 0;
        for (Object key : totalData.getKeys()) {
            String k = (String) key;
            try {
                Number groupValue = data.getValue(k);
                Number totalValue = totalData.getValue(k);
                groupSum += groupValue.intValue();
                totalSum += totalValue.intValue();
                barItemLabels.put(k, Tools.formatIntegerIfPossible(groupValue.doubleValue()) + " / " + Tools.formatIntegerIfPossible(totalValue.doubleValue()));
                cumulativeItemLabels.put(k, groupSum + " / " + totalSum);
            } catch (UnknownKeyException e) {
            }
        }
        renderer.setSeriesItemLabelFont(0, LABEL_FONT);
        if (showBarLabelsFlag) {
            renderer.setSeriesItemLabelsVisible(0, true);
            renderer.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(barItemLabels));
            if (isLabelRotating()) {
                renderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
                renderer.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
            }
        }
        LineAndShapeRenderer renderer2 = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer(1);
        renderer2.setSeriesItemLabelFont(0, LABEL_FONT);
        renderer2.setSeriesItemLabelPaint(0, SwingTools.VERY_DARK_BLUE.darker());
        if (isLabelRotating()) {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
        } else {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
        }
        if (showCumulativeLabelsFlag) {
            renderer2.setSeriesItemLabelsVisible(0, true);
            renderer2.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(cumulativeItemLabels));
        }
        // draw outlines
        renderer.setDrawBarOutline(true);
        // gridline colors
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        // legend settings
        LegendTitle legend = chart.getLegend();
        if (legend != null) {
            legend.setPosition(RectangleEdge.TOP);
            legend.setFrame(BlockBorder.NONE);
            legend.setHorizontalAlignment(HorizontalAlignment.LEFT);
            legend.setItemFont(LABEL_FONT);
        }
        Rectangle2D drawRect = new Rectangle2D.Double(0, 0, getWidth(), getHeight());
        chart.draw((Graphics2D) graphics, drawRect);
    }
}
Example 52
Project: rapidminer-studio-master  File: ParetoChartPlotter.java View source code
public void paintParetoChart(Graphics graphics) {
    prepareData();
    JFreeChart chart = createChart();
    if (chart != null) {
        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);
        chart.getPlot().setBackgroundPaint(Color.WHITE);
        // bar renderer --> own 3D effect
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        // renderer.setBarPainter(new StandardBarPainter());
        renderer.setBarPainter(new RapidBarPainter());
        renderer.setSeriesPaint(0, getColorProvider(true).getPointColor(1));
        // labels on top of bars
        Map<String, String> barItemLabels = new HashMap<>();
        Map<String, String> cumulativeItemLabels = new HashMap<>();
        int groupSum = 0;
        int totalSum = 0;
        for (Object key : totalData.getKeys()) {
            String k = (String) key;
            try {
                Number groupValue = data.getValue(k);
                Number totalValue = totalData.getValue(k);
                groupSum += groupValue.intValue();
                totalSum += totalValue.intValue();
                barItemLabels.put(k, Tools.formatIntegerIfPossible(groupValue.doubleValue()) + " / " + Tools.formatIntegerIfPossible(totalValue.doubleValue()));
                cumulativeItemLabels.put(k, groupSum + " / " + totalSum);
            } catch (UnknownKeyException e) {
            }
        }
        renderer.setSeriesItemLabelFont(0, LABEL_FONT);
        if (showBarLabelsFlag) {
            renderer.setSeriesItemLabelsVisible(0, true);
            renderer.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(barItemLabels));
            if (isLabelRotating()) {
                renderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
                renderer.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
            }
        }
        LineAndShapeRenderer renderer2 = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer(1);
        renderer2.setSeriesPaint(0, Color.GRAY.darker().darker());
        renderer2.setSeriesItemLabelFont(0, LABEL_FONT);
        renderer2.setSeriesItemLabelPaint(0, Color.BLACK);
        if (isLabelRotating()) {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
        } else {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
        }
        if (showCumulativeLabelsFlag) {
            renderer2.setSeriesItemLabelsVisible(0, true);
            renderer2.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(cumulativeItemLabels));
        }
        // draw outlines
        renderer.setDrawBarOutline(true);
        // gridline colors
        plot.setRangeGridlinePaint(Color.BLACK);
        // legend settings
        LegendTitle legend = chart.getLegend();
        if (legend != null) {
            legend.setPosition(RectangleEdge.TOP);
            legend.setFrame(BlockBorder.NONE);
            legend.setHorizontalAlignment(HorizontalAlignment.LEFT);
            legend.setItemFont(LABEL_FONT);
        }
        Rectangle2D drawRect = new Rectangle2D.Double(0, 0, getWidth(), getHeight());
        chart.draw((Graphics2D) graphics, drawRect);
    }
}
Example 53
Project: rapidminer-vega-master  File: ParetoChartPlotter.java View source code
public void paintParetoChart(Graphics graphics) {
    prepareData();
    JFreeChart chart = createChart();
    if (chart != null) {
        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);
        chart.getPlot().setBackgroundPaint(Color.WHITE);
        // bar renderer --> own 3D effect
        CategoryPlot plot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        // renderer.setBarPainter(new StandardBarPainter());
        renderer.setBarPainter(new RapidBarPainter());
        renderer.setSeriesPaint(0, getColorProvider().getPointColor(1));
        // labels on top of bars
        Map<String, String> barItemLabels = new HashMap<String, String>();
        Map<String, String> cumulativeItemLabels = new HashMap<String, String>();
        int groupSum = 0;
        int totalSum = 0;
        for (Object key : totalData.getKeys()) {
            String k = (String) key;
            try {
                Number groupValue = data.getValue(k);
                Number totalValue = totalData.getValue(k);
                groupSum += groupValue.intValue();
                totalSum += totalValue.intValue();
                barItemLabels.put(k, Tools.formatIntegerIfPossible(groupValue.doubleValue()) + " / " + Tools.formatIntegerIfPossible(totalValue.doubleValue()));
                cumulativeItemLabels.put(k, groupSum + " / " + totalSum);
            } catch (UnknownKeyException e) {
            }
        }
        renderer.setSeriesItemLabelFont(0, LABEL_FONT);
        if (showBarLabelsFlag) {
            renderer.setSeriesItemLabelsVisible(0, true);
            renderer.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(barItemLabels));
            if (isLabelRotating()) {
                renderer.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
                renderer.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0d));
            }
        }
        LineAndShapeRenderer renderer2 = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer(1);
        renderer2.setSeriesItemLabelFont(0, LABEL_FONT);
        renderer2.setSeriesItemLabelPaint(0, SwingTools.VERY_DARK_BLUE.darker());
        if (isLabelRotating()) {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -Math.PI / 2.0d));
        } else {
            renderer2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
            renderer2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE10, TextAnchor.BOTTOM_RIGHT));
        }
        if (showCumulativeLabelsFlag) {
            renderer2.setSeriesItemLabelsVisible(0, true);
            renderer2.setSeriesItemLabelGenerator(0, new ParetoChartItemLabelGenerator(cumulativeItemLabels));
        }
        // draw outlines
        renderer.setDrawBarOutline(true);
        // gridline colors
        plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
        // legend settings
        LegendTitle legend = chart.getLegend();
        if (legend != null) {
            legend.setPosition(RectangleEdge.TOP);
            legend.setFrame(BlockBorder.NONE);
            legend.setHorizontalAlignment(HorizontalAlignment.LEFT);
            legend.setItemFont(LABEL_FONT);
        }
        Rectangle2D drawRect = new Rectangle2D.Double(0, 0, getWidth(), getHeight());
        chart.draw((Graphics2D) graphics, drawRect);
    }
}
Example 54
Project: RomRaider-master  File: DynoChartPanel.java View source code
public void interpolate(double[] results, String[] resultStrings) {
    hpAxis.setAutoRange(true);
    tqAxis.setAutoRange(true);
    double rangeMin = Math.min(tqAxis.getLowerBound(), hpAxis.getLowerBound());
    double yMin = Math.round(rangeMin);
    double ySpace = (hpAxis.getUpperBound() - hpAxis.getLowerBound()) / 25;
    double xMin = ((plot.getDomainAxis().getUpperBound() - plot.getDomainAxis().getLowerBound()) / 7) + plot.getDomainAxis().getLowerBound();
    hpAxis.setRange(Math.round(rangeMin), Math.round(hpAxis.getUpperBound() + ySpace));
    tqAxis.setRange(Math.round(rangeMin), Math.round(tqAxis.getUpperBound() + ySpace));
    bestHp = new XYDrawableAnnotation(results[1], results[0], 10, 10, cd);
    hpPointer.setX(results[1]);
    hpPointer.setY(results[0]);
    hpPointer.setArrowPaint(BLUE);
    hpPointer.setTipRadius(7.0);
    hpPointer.setBaseRadius(30.0);
    hpPointer.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 10));
    hpPointer.setPaint(BLUE);
    bestTq = new XYDrawableAnnotation(results[3], results[2], 10, 10, cd);
    tqPointer.setX(results[3]);
    tqPointer.setY(results[2]);
    tqPointer.setArrowPaint(YELLOW);
    tqPointer.setTipRadius(7.0);
    tqPointer.setBaseRadius(30.0);
    tqPointer.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 10));
    tqPointer.setPaint(YELLOW);
    final XYTextAnnotation dynoResults = new XYTextAnnotation(resultStrings[1], xMin, yMin + (ySpace * 5));
    dynoResults.setPaint(RED);
    dynoResults.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    dynoResults.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 14));
    final XYTextAnnotation carText = new XYTextAnnotation(resultStrings[0], xMin, yMin + (ySpace * 4));
    carText.setPaint(RED);
    carText.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    carText.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
    final XYTextAnnotation stat1 = new XYTextAnnotation(resultStrings[2], xMin, yMin + (ySpace * 3));
    stat1.setPaint(RED);
    stat1.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    stat1.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
    final XYTextAnnotation stat2 = new XYTextAnnotation(resultStrings[3], xMin, yMin + ySpace * 2);
    stat2.setPaint(RED);
    stat2.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    stat2.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
    final XYTextAnnotation stat3 = new XYTextAnnotation(resultStrings[4], xMin, yMin + ySpace);
    stat3.setPaint(RED);
    stat3.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    stat3.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
    final XYTextAnnotation stat4 = new XYTextAnnotation(resultStrings[5], xMin, yMin);
    stat4.setPaint(RED);
    stat4.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    stat4.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
    if (!refStat.equals(" ")) {
        refStat.setX(plot.getDomainAxis().getLowerBound() + 10);
        refStat.setY(hpAxis.getUpperBound());
        plot.addAnnotation(refStat);
    }
    rendererY1.addAnnotation(bestHp);
    rendererY2.addAnnotation(bestTq);
    rendererY1.addAnnotation(hpPointer);
    rendererY2.addAnnotation(tqPointer);
    plot.addAnnotation(dynoResults);
    plot.addAnnotation(carText);
    plot.addAnnotation(stat1);
    plot.addAnnotation(stat2);
    plot.addAnnotation(stat3);
    plot.addAnnotation(stat4);
}
Example 55
Project: spatial_statistics_for_geotools_udig-master  File: HistogramDialog.java View source code
private void updateChart(SimpleFeatureCollection features, String field) {
    int bin = spinner.getSelection();
    double[] values = getValues(features, field);
    HistogramDataset dataset = new HistogramDataset();
    dataset.addSeries(field, values, bin, minMaxVisitor.getMinX(), minMaxVisitor.getMaxX());
    dataset.setType(histogramType);
    JFreeChart chart = ChartFactory.createHistogram(EMPTY, null, null, dataset, PlotOrientation.VERTICAL, false, false, false);
    // 1. Create a single plot containing both the scatter and line
    chart.setBackgroundPaint(java.awt.Color.WHITE);
    chart.setBorderVisible(false);
    XYPlot plot = (XYPlot) chart.getPlot();
    plot.setForegroundAlpha(0.85F);
    plot.setBackgroundPaint(java.awt.Color.WHITE);
    plot.setOrientation(PlotOrientation.VERTICAL);
    plot.setDomainGridlinePaint(java.awt.Color.LIGHT_GRAY);
    plot.setRangeGridlinePaint(java.awt.Color.LIGHT_GRAY);
    int fontStyle = java.awt.Font.BOLD;
    FontData fontData = getShell().getDisplay().getSystemFont().getFontData()[0];
    NumberAxis valueAxis = new NumberAxis(cboField.getText());
    valueAxis.setLabelFont(new Font(fontData.getName(), fontStyle, 12));
    valueAxis.setTickLabelFont(new Font(fontData.getName(), fontStyle, 10));
    valueAxis.setAutoRange(false);
    valueAxis.setRange(minMaxVisitor.getMinX(), minMaxVisitor.getMaxX());
    //$NON-NLS-1$ //$NON-NLS-2$
    String rangeAxisLabel = histogramType == HistogramType.FREQUENCY ? "Frequency" : "Ratio";
    NumberAxis rangeAxis = new NumberAxis(rangeAxisLabel);
    rangeAxis.setLabelFont(new Font(fontData.getName(), fontStyle, 12));
    rangeAxis.setTickLabelFont(new Font(fontData.getName(), fontStyle, 10));
    if (histogramType == HistogramType.FREQUENCY) {
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    }
    XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer();
    renderer.setShadowVisible(false);
    // init
    CustomXYBarPainter.selectedColumn = -1;
    renderer.setBarPainter(new CustomXYBarPainter());
    renderer.setAutoPopulateSeriesFillPaint(true);
    renderer.setAutoPopulateSeriesPaint(true);
    renderer.setShadowXOffset(3);
    renderer.setMargin(0.01);
    renderer.setBaseItemLabelsVisible(true);
    ItemLabelPosition pos = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.TOP_CENTER);
    renderer.setBasePositiveItemLabelPosition(pos);
    XYToolTipGenerator plotToolTip = new StandardXYToolTipGenerator();
    renderer.setBaseToolTipGenerator(plotToolTip);
    // color
    GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, java.awt.Color.GRAY, 0.0f, 0.0f, java.awt.Color.LIGHT_GRAY);
    renderer.setSeriesPaint(0, gp0);
    plot.setDomainAxis(0, valueAxis);
    plot.setRangeAxis(0, rangeAxis);
    // 3. Setup line
    // Create the line data, renderer, and axis
    // Lines only
    XYItemRenderer lineRenderer = new XYLineAndShapeRenderer(true, false);
    lineRenderer.setSeriesPaint(0, java.awt.Color.RED);
    lineRenderer.setSeriesStroke(0, new BasicStroke(2f));
    // Set the line data, renderer, and axis into plot
    NumberAxis xLineAxis = new NumberAxis(EMPTY);
    xLineAxis.setTickMarksVisible(false);
    xLineAxis.setTickLabelsVisible(false);
    xLineAxis.setAutoRange(false);
    NumberAxis yLineAxis = new NumberAxis(EMPTY);
    yLineAxis.setTickMarksVisible(false);
    yLineAxis.setTickLabelsVisible(false);
    yLineAxis.setAutoRange(false);
    double maxYValue = Double.MIN_VALUE;
    for (int i = 0; i < dataset.getItemCount(0); i++) {
        maxYValue = Math.max(maxYValue, dataset.getYValue(0, i));
    }
    XYSeriesCollection lineDatset = new XYSeriesCollection();
    // Vertical Average
    //$NON-NLS-1$
    XYSeries vertical = new XYSeries("Average");
    vertical.add(minMaxVisitor.getAverageX(), 0);
    vertical.add(minMaxVisitor.getAverageX(), maxYValue);
    lineDatset.addSeries(vertical);
    plot.setDataset(1, lineDatset);
    plot.setRenderer(1, lineRenderer);
    plot.setDomainAxis(1, xLineAxis);
    plot.setRangeAxis(1, yLineAxis);
    // Map the line to the second Domain and second Range
    plot.mapDatasetToDomainAxis(1, 0);
    plot.mapDatasetToRangeAxis(1, 0);
    chartComposite.setChart(chart);
    chartComposite.forceRedraw();
}
Example 56
Project: tdq-studio-se-master  File: TopChartFactory.java View source code
public static JFreeChart createBlockingBarChart(String title, HistogramDataset dataset) {
    ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme());
    JFreeChart chart = //$NON-NLS-1$
    ChartFactory.createHistogram(//$NON-NLS-1$
    null, //$NON-NLS-1$
    title, //$NON-NLS-1$
    "Key frequency", //$NON-NLS-1$
    dataset, //$NON-NLS-1$
    PlotOrientation.VERTICAL, //$NON-NLS-1$
    false, true, false);
    XYPlot plot = chart.getXYPlot();
    plot.getRangeAxis().setUpperMargin(0.08);
    // plot.getRangeAxis().setLowerBound(-0.08);
    decorateCategoryPlot(chart);
    plot.setRangeGridlinesVisible(true);
    XYBarRenderer renderer = new XYBarRenderer() {

        private static final long serialVersionUID = 4168794048090452033L;

        @Override
        public Paint getItemPaint(int row, int column) {
            return ChartDecorator.COLOR_LIST.get(0);
        }
    };
    renderer.setBaseItemLabelsVisible(true);
    renderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    renderer.setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    renderer.setShadowVisible(Boolean.FALSE);
    plot.setRenderer(renderer);
    return chart;
}
Example 57
Project: trade-manager-master  File: PivotRenderer.java View source code
/**
	 * Draws the annotation.
	 * 
	 * @param g2
	 *            the graphics device.
	 * @param plot
	 *            the plot.
	 * @param dataArea
	 *            the data area.
	 * @param domainAxis
	 *            the domain axis.
	 * @param rangeAxis
	 *            the range axis.
	 * @param rendererIndex
	 *            the renderer index.
	 * @param info
	 *            the plot rendering info.
	 * @param angle
	 *            double
	 * @param x
	 *            double
	 * @param y
	 *            double
	 * @param ledgend
	 *            String
	 */
public void drawPivotArrow(Graphics2D g2, XYPlot plot, Rectangle2D dataArea, ValueAxis domainAxis, ValueAxis rangeAxis, int rendererIndex, PlotRenderingInfo info, double angle, double x, double y, String ledgend) {
    double tipRadius = DEFAULT_TIP_RADIUS;
    double baseRadius = DEFAULT_BASE_RADIUS;
    double arrowLength = DEFAULT_ARROW_LENGTH;
    double arrowWidth = DEFAULT_ARROW_WIDTH;
    double labelOffset = DEFAULT_LABEL_OFFSET;
    Font font = DEFAULT_FONT;
    Paint paint = DEFAULT_PAINT;
    boolean outlineVisible = false;
    Paint outlinePaint = Color.black;
    Stroke outlineStroke = new BasicStroke(0.5f);
    TextAnchor textAnchor = DEFAULT_TEXT_ANCHOR;
    TextAnchor rotationAnchor = DEFAULT_ROTATION_ANCHOR;
    double rotationAngle = DEFAULT_ROTATION_ANGLE;
    Stroke arrowStroke = new BasicStroke(1.0f);
    Paint arrowPaint = Color.black;
    PlotOrientation orientation = plot.getOrientation();
    RectangleEdge domainEdge = Plot.resolveDomainAxisLocation(plot.getDomainAxisLocation(), orientation);
    RectangleEdge rangeEdge = Plot.resolveRangeAxisLocation(plot.getRangeAxisLocation(), orientation);
    double j2DX = domainAxis.valueToJava2D(x, dataArea, domainEdge);
    double j2DY = rangeAxis.valueToJava2D(y, dataArea, rangeEdge);
    if (orientation == PlotOrientation.HORIZONTAL) {
        double temp = j2DX;
        j2DX = j2DY;
        j2DY = temp;
    }
    double startX = j2DX + (Math.cos(angle) * baseRadius);
    double startY = j2DY + (Math.sin(angle) * baseRadius);
    double endX = j2DX + (Math.cos(angle) * tipRadius);
    double endY = j2DY + (Math.sin(angle) * tipRadius);
    double arrowBaseX = endX + (Math.cos(angle) * arrowLength);
    double arrowBaseY = endY + (Math.sin(angle) * arrowLength);
    double arrowLeftX = arrowBaseX + (Math.cos(angle + (Math.PI / 2.0)) * arrowWidth);
    double arrowLeftY = arrowBaseY + (Math.sin(angle + (Math.PI / 2.0)) * arrowWidth);
    double arrowRightX = arrowBaseX - (Math.cos(angle + (Math.PI / 2.0)) * arrowWidth);
    double arrowRightY = arrowBaseY - (Math.sin(angle + (Math.PI / 2.0)) * arrowWidth);
    GeneralPath arrow = new GeneralPath();
    arrow.moveTo((float) endX, (float) endY);
    arrow.lineTo((float) arrowLeftX, (float) arrowLeftY);
    arrow.lineTo((float) arrowRightX, (float) arrowRightY);
    arrow.closePath();
    g2.setStroke(arrowStroke);
    g2.setPaint(arrowPaint);
    Line2D line = new Line2D.Double(startX, startY, endX, endY);
    g2.draw(line);
    g2.fill(arrow);
    // draw the label
    double labelX = j2DX + (Math.cos(angle) * (baseRadius + labelOffset));
    double labelY = j2DY + (Math.sin(angle) * (baseRadius + labelOffset));
    g2.setFont(font);
    Shape hotspot = TextUtilities.calculateRotatedStringBounds(ledgend, g2, (float) labelX, (float) labelY, textAnchor, rotationAngle, rotationAnchor);
    g2.setPaint(paint);
    TextUtilities.drawRotatedString(ledgend, g2, (float) labelX, (float) labelY, textAnchor, rotationAngle, rotationAnchor);
    if (outlineVisible) {
        g2.setStroke(outlineStroke);
        g2.setPaint(outlinePaint);
        g2.draw(hotspot);
    }
// String toolTip = getToolTipText();
// String url = getURL();
// if (toolTip != null || url != null) {
// addEntity(info, hotspot, rendererIndex, toolTip, url);
// }
}
Example 58
Project: zaproxy-master  File: ScanProgressDialog.java View source code
/**
     * Updates the scan progress shown by the dialogue (scanners' progress/state and chart).
     */
private void updateProgress() {
    // Start panel data settings
    HostProcess hp = getSelectedHostProcess();
    if (scan.getHostProcesses() != null && hp != null) {
        // Update the main table entries
        model.updateValues(scan, hp);
        if (scan.isStopped()) {
            this.stopThread = true;
        }
        if (chart != null) {
            ResponseCountSnapshot snapshot = scan.getRequestHistory();
            while (snapshot != null) {
                try {
                    Second second = new Second(snapshot.getDate());
                    this.seriesTotal.add(second, snapshot.getTotal());
                    this.series100.add(second, snapshot.getResp100());
                    this.series200.add(second, snapshot.getResp200());
                    this.series300.add(second, snapshot.getResp300());
                    this.series400.add(second, snapshot.getResp400());
                    this.series500.add(second, snapshot.getResp500());
                    snapshot = scan.getRequestHistory();
                    for (Plugin plugin : scan.getHostProcesses().get(0).getRunning()) {
                        if (!labelsAdded.contains(plugin.getName())) {
                            // Add a vertical line with the plugin name
                            ValueMarker vm = new ValueMarker(plugin.getTimeStarted().getTime());
                            double center = chart.getXYPlot().getRangeAxis().getRange().getCentralValue();
                            if (lastCentre != center) {
                                if (lastCentre != -1) {
                                    // Move the existing labels so they stay in the centre
                                    @SuppressWarnings("rawtypes") List annotations = chart.getXYPlot().getAnnotations();
                                    for (Object o : annotations) {
                                        if (o instanceof XYTextAnnotation) {
                                            XYTextAnnotation annotation = (XYTextAnnotation) o;
                                            annotation.setY(center);
                                        }
                                    }
                                }
                                lastCentre = center;
                            }
                            XYTextAnnotation updateLabel = new XYTextAnnotation(plugin.getName(), plugin.getTimeStarted().getTime(), center);
                            updateLabel.setFont(FontUtils.getFont("Sans Serif"));
                            updateLabel.setRotationAnchor(TextAnchor.BASELINE_CENTER);
                            updateLabel.setTextAnchor(TextAnchor.BASELINE_CENTER);
                            updateLabel.setRotationAngle(-3.14 / 2);
                            updateLabel.setPaint(Color.black);
                            chart.getXYPlot().addDomainMarker(vm, Layer.BACKGROUND);
                            chart.getXYPlot().addAnnotation(updateLabel);
                            labelsAdded.add(plugin.getName());
                        }
                    }
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                    snapshot = null;
                }
            }
        }
    }
}
Example 59
Project: agile-itsm-master  File: GerencialGenerateEjb.java View source code
private Object generateRetornoGrafico_Barra(boolean is3D, List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario, GerencialItemPainelDTO gerencialItemPainelAuxDto, HttpServletRequest request) throws Exception {
    JFreeChart chart;
    DefaultCategoryDataset dados = new DefaultCategoryDataset();
    Double objDouble;
    String objString1;
    String objString2;
    int qtdeColunas = 0;
    int posString = 0;
    int qtdeLinhas = 0;
    for (int i = 0; i < listRetorno.size(); i++) {
        Object[] row = (Object[]) listRetorno.get(i);
        qtdeColunas = row.length - 1;
        objDouble = new Double(0);
        objString1 = "";
        objString2 = "";
        posString = 0;
        qtdeLinhas++;
        for (int j = 0; j < row.length; j++) {
            Object obj = row[j];
            GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
            if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
                if (Integer.class.isInstance(obj)) {
                    objDouble = new Double(((Integer) obj).intValue());
                } else if (Long.class.isInstance(obj)) {
                    objDouble = new Double(((Long) obj).intValue());
                }
            }
            if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
                objDouble = null;
                if (Integer.class.isInstance(obj)) {
                    objDouble = new Double(((Integer) obj).doubleValue());
                } else {
                    if (BigDecimal.class.isInstance(obj)) {
                        objDouble = new Double(((BigDecimal) obj).doubleValue());
                    } else if (Long.class.isInstance(obj)) {
                        objDouble = new Double(((Long) obj).doubleValue());
                    } else if (Integer.class.isInstance(obj)) {
                        objDouble = new Double(((Integer) obj).doubleValue());
                    } else if (BigInteger.class.isInstance(obj)) {
                        objDouble = new Double(((BigInteger) obj).doubleValue());
                    } else {
                        objDouble = (Double) obj;
                    }
                }
                if (objDouble == null) {
                    objDouble = new Double(0);
                }
            }
            if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
                if (obj == null) {
                    obj = new String("");
                }
                String str = "";
                if (Integer.class.isInstance(obj)) {
                    str = "" + (Integer) obj;
                } else {
                    str = (String) obj;
                }
                if (posString == 0) {
                    objString1 = str;
                } else {
                    objString2 = str;
                }
                posString++;
            }
        }
        if (objString1 == null || objString1.trim().equalsIgnoreCase("")) {
            Object obj = row[0];
            GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(0);
            if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
                objString1 = new String("" + ((Integer) obj).intValue());
            }
            if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
                objDouble = null;
                if (Integer.class.isInstance(obj)) {
                    objDouble = new Double(((Integer) obj).doubleValue());
                } else {
                    if (BigDecimal.class.isInstance(obj)) {
                        objDouble = new Double(((BigDecimal) obj).doubleValue());
                    } else if (Long.class.isInstance(obj)) {
                        objDouble = new Double(((Long) obj).doubleValue());
                    } else if (Integer.class.isInstance(obj)) {
                        objDouble = new Double(((Integer) obj).doubleValue());
                    } else if (BigInteger.class.isInstance(obj)) {
                        objDouble = new Double(((BigInteger) obj).doubleValue());
                    } else {
                        objDouble = (Double) obj;
                    }
                }
                if (objDouble == null) {
                    objDouble = new Double(0);
                }
                objString1 = UtilFormatacao.formatDouble(objDouble, 0);
            }
        }
        dados.addValue(objDouble.doubleValue(), objString1, objString2);
    }
    String t1 = null;
    String t2 = null;
    GerencialFieldDTO fieldDto = null;
    try {
        fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(0);
        t1 = fieldDto.getTitle();
    } catch (Exception e) {
    }
    try {
        fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(qtdeColunas);
        t2 = fieldDto.getTitle();
    } catch (Exception e) {
    }
    if (is3D) {
        chart = ChartFactory.createBarChart3D(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), t1, t2, dados, PlotOrientation.VERTICAL, true, true, false);
    } else {
        chart = ChartFactory.createBarChart(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), t1, t2, dados, PlotOrientation.VERTICAL, true, true, false);
    }
    // Setando o valor maximo para nunca passar de 100, ja q se trata de
    // porcentagem
    CategoryPlot plot = chart.getCategoryPlot();
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
    plot.getRenderer().setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE1, TextAnchor.CENTER));
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    rangeAxis.setUpperMargin(0.20);
    rangeAxis.setAxisLineVisible(true);
    rangeAxis.setTickLabelsVisible(true);
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    // Formatando cores de fundo, fonte do titulo, etc...
    // Cor do fundo do grafico
    chart.setBackgroundPaint(COR_FUNDO);
    // Cor do titulo
    chart.getTitle().setPaint(COR_TITULO);
    // Fonte do
    chart.getTitle().setFont(new java.awt.Font("arial", Font.BOLD, 10));
    // Cor de
    chart.getPlot().setBackgroundPaint(new Color(221, 227, 213));
    chart.getLegend().setItemFont(new java.awt.Font("arial", Font.BOLD, 8));
    // Visibilidade da borda do grafico
    chart.setBorderVisible(false);
    BarRenderer rend = (BarRenderer) plot.getRenderer();
    // CategoryItemRenderer rend = (CategoryItemRenderer) plot.getRenderer();
    // Cor da borda das barras do
    rend.setSeriesOutlinePaint(0, Color.BLACK);
    rend.setBaseItemLabelFont(new java.awt.Font("SansSerif", Font.BOLD, 10));
    // rend.setSeriesPaint(0, new Color(70 ,130 ,180)); // Cor das barras do
    // rend.setItemMargin(0.10); // Margem entre o eixo Y e a primeira barra do
    rend.setBaseItemLabelsVisible(true);
    // rend.setBaseItemLabelGenerator(new CustomLabelGenerator());
    rend.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    rend.setSeriesItemLabelsVisible(0, new Boolean(true));
    rend.setSeriesItemLabelGenerator(0, new StandardCategoryItemLabelGenerator());
    // rend.setSeriesPositiveItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE11, TextAnchor.BASELINE_CENTER, TextAnchor.BASELINE_CENTER, 50.0));
    rend.setPositiveItemLabelPositionFallback(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.BASELINE_CENTER, TextAnchor.CENTER, 0.0));
    String caminhoRelativo = "";
    String caminho = "";
    try {
        File arquivo = new File(infoGenerate.getCaminhoArquivosGraficos());
        if (!arquivo.exists()) {
            arquivo.mkdirs();
        }
        File arquivoVer = new File(infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario());
        if (!arquivoVer.exists()) {
            arquivoVer.mkdirs();
        }
        caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_" + UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
        // caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
        // usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_" +
        // UtilDatas.formatTimestamp(UtilDatas.getDataHoraAtual()).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
        String urlInicial = "";
        if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")) {
            urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
        }
        caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_" + UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
        caminhoRelativoAuxiliar = caminhoRelativo;
        arquivo = new File(caminho);
        if (arquivo.exists()) {
            arquivo.delete();
        }
        int tam = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getWidth()));
        int alt = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getHeigth()));
        tam = tam - 15;
        alt = alt - 70;
        /*
			 * if (qtdeLinhas > 20){ tam = qtdeLinhas * 18; }
			 */
        ChartUtilities.saveChartAsPNG(arquivo, chart, tam, alt);
        LOGGER.info("Grafico de Barras gerado em:\n\t" + caminho);
    } catch (IOException e) {
        LOGGER.error("Problemas durante a criação do Gráfico de Barras.", e);
    }
    if (listRetorno != null && listRetorno.size() != 0) {
        return "<img src=\"" + caminhoRelativo + "\"/>";
    } else {
        return null;
    }
}
Example 60
Project: ControlAndroidDeviceFromPC-master  File: NetworkPanel.java View source code
/**
     * Create chart of recent network activity.
     */
private void createChart() {
    mChart = ChartFactory.createTimeSeriesChart(null, null, null, null, false, false, false);
    // create backing datasets and series
    mRxTotalSeries = new TimeSeries("RX total");
    mTxTotalSeries = new TimeSeries("TX total");
    mRxTotalSeries.setMaximumItemAge(HISTORY_MILLIS);
    mTxTotalSeries.setMaximumItemAge(HISTORY_MILLIS);
    mTotalCollection = new TimeSeriesCollection();
    mTotalCollection.addSeries(mRxTotalSeries);
    mTotalCollection.addSeries(mTxTotalSeries);
    mRxDetailDataset = new LiveTimeTableXYDataset();
    mTxDetailDataset = new LiveTimeTableXYDataset();
    mTotalRenderer = new XYAreaRenderer(XYAreaRenderer.AREA);
    mRenderer = new StackedXYAreaRenderer2();
    final XYPlot xyPlot = mChart.getXYPlot();
    xyPlot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
    xyPlot.setDataset(0, mTotalCollection);
    xyPlot.setDataset(1, mRxDetailDataset);
    xyPlot.setDataset(2, mTxDetailDataset);
    xyPlot.setRenderer(0, mTotalRenderer);
    xyPlot.setRenderer(1, mRenderer);
    xyPlot.setRenderer(2, mRenderer);
    // we control domain axis manually when taking samples
    mDomainAxis = xyPlot.getDomainAxis();
    mDomainAxis.setAutoRange(false);
    final NumberAxis axis = new NumberAxis();
    axis.setNumberFormatOverride(new BytesFormat(true));
    axis.setAutoRangeMinimumSize(50);
    xyPlot.setRangeAxis(axis);
    xyPlot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    // draw thick line to separate RX versus TX traffic
    xyPlot.addRangeMarker(new ValueMarker(0, java.awt.Color.BLACK, new java.awt.BasicStroke(2)));
    // label to indicate that positive axis is RX traffic
    final ValueMarker rxMarker = new ValueMarker(0);
    rxMarker.setStroke(new java.awt.BasicStroke(0));
    rxMarker.setLabel("RX");
    rxMarker.setLabelFont(rxMarker.getLabelFont().deriveFont(30f));
    rxMarker.setLabelPaint(java.awt.Color.LIGHT_GRAY);
    rxMarker.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
    rxMarker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
    xyPlot.addRangeMarker(rxMarker);
    // label to indicate that negative axis is TX traffic
    final ValueMarker txMarker = new ValueMarker(0);
    txMarker.setStroke(new java.awt.BasicStroke(0));
    txMarker.setLabel("TX");
    txMarker.setLabelFont(txMarker.getLabelFont().deriveFont(30f));
    txMarker.setLabelPaint(java.awt.Color.LIGHT_GRAY);
    txMarker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
    txMarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    xyPlot.addRangeMarker(txMarker);
    mChartComposite = new ChartComposite(mPanel, SWT.BORDER, mChart, ChartComposite.DEFAULT_WIDTH, ChartComposite.DEFAULT_HEIGHT, ChartComposite.DEFAULT_MINIMUM_DRAW_WIDTH, ChartComposite.DEFAULT_MINIMUM_DRAW_HEIGHT, 4096, 4096, true, true, true, true, false, true);
    final FormData data = new FormData();
    data.top = new FormAttachment(mHeader);
    data.left = new FormAttachment(0);
    data.bottom = new FormAttachment(70);
    data.right = new FormAttachment(100);
    mChartComposite.setLayoutData(data);
}
Example 61
Project: FlightPlot-master  File: FlightPlot.java View source code
private void generateSeries() throws IOException, FormatErrorException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
    activeProcessors.clear();
    activeProcessors.addAll(getActiveProcessors());
    dataset.removeAllSeries();
    seriesIndex.clear();
    PlotProcessor[] processors = new PlotProcessor[activeProcessors.size()];
    // Update time offset according to selected time mode
    long timeOffset = getTimeOffset(timeMode);
    // Displayed log range in seconds of native log time
    Range range = getLogRange(timeMode);
    // Process some extra data in hidden areas
    long timeStart = (long) ((range.getLowerBound() - range.getLength()) * 1e6);
    long timeStop = (long) ((range.getUpperBound() + range.getLength()) * 1e6);
    timeStart = Math.max(logReader.getStartMicroseconds(), timeStart);
    timeStop = Math.min(logReader.getStartMicroseconds() + logReader.getSizeMicroseconds(), timeStop);
    double timeScale = (selectDomainAxis(timeMode) == domainAxisDate) ? 1000.0 : 1.0;
    int displayPixels = 2000;
    double skip = range.getLength() / displayPixels;
    if (processors.length > 0) {
        for (int i = 0; i < activeProcessors.size(); i++) {
            ProcessorPreset pp = activeProcessors.get(i);
            PlotProcessor processor;
            processor = processorsTypesList.getProcessorInstance(pp, skip, logReader.getFields());
            processor.setFieldsList(logReader.getFields());
            processors[i] = processor;
        }
        logReader.seek(timeStart);
        logReader.clearErrors();
        Map<String, Object> data = new HashMap<String, Object>();
        while (true) {
            long t;
            data.clear();
            try {
                t = logReader.readUpdate(data);
            } catch (EOFException e) {
                break;
            }
            if (t > timeStop) {
                break;
            }
            for (PlotProcessor processor : processors) {
                processor.process((t + timeOffset) * 1e-6, data);
            }
        }
        chart.getXYPlot().clearDomainMarkers();
        for (int i = 0; i < activeProcessors.size(); i++) {
            PlotProcessor processor = processors[i];
            String processorTitle = activeProcessors.get(i).getTitle();
            Map<String, Integer> processorSeriesIndex = new HashMap<String, Integer>();
            seriesIndex.add(processorSeriesIndex);
            for (PlotItem item : processor.getSeriesList()) {
                if (item instanceof Series) {
                    Series series = (Series) item;
                    processorSeriesIndex.put(series.getTitle(), dataset.getSeriesCount());
                    XYSeries jseries = new XYSeries(series.getFullTitle(processorTitle), false);
                    for (XYPoint point : series) {
                        jseries.add(point.x * timeScale, point.y, false);
                    }
                    dataset.addSeries(jseries);
                } else if (item instanceof MarkersList) {
                    MarkersList markers = (MarkersList) item;
                    processorSeriesIndex.put(markers.getTitle(), dataset.getSeriesCount());
                    XYSeries jseries = new XYSeries(markers.getFullTitle(processorTitle), false);
                    dataset.addSeries(jseries);
                    for (Marker marker : markers) {
                        TaggedValueMarker m = new TaggedValueMarker(i, marker.x * timeScale);
                        m.setPaint(Color.black);
                        m.setLabel(marker.label);
                        m.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
                        m.setLabelTextAnchor(TextAnchor.TOP_LEFT);
                        chart.getXYPlot().addDomainMarker(0, m, Layer.BACKGROUND, false);
                    }
                }
            }
        }
        setChartColors();
        setChartMarkers();
    }
    chartPanel.repaint();
}
Example 62
Project: grammarviz2_src-master  File: GrammarvizChartPanel.java View source code
/**
   * Puts rules density on show.
   */
private void displayRuleDensity() {
    // this is the new "insert" - elastic boundaries chart panel
    //
    // paintTheChart(this.session.chartData.getOriginalTimeseries());
    // chartPanel = new ChartPanel(this.chart);
    // chartPanel.setMaximumDrawHeight(this.getParent().getHeight());
    // chartPanel.setMaximumDrawWidth(this.getParent().getWidth());
    // chartPanel.setMinimumDrawWidth(0);
    // chartPanel.setMinimumDrawHeight(0);
    // chartPanel.revalidate();
    //
    this.removeAll();
    this.add(chartPanel);
    // init vars
    //
    int maxObservedCoverage = Integer.MIN_VALUE;
    int minObservedCoverage = Integer.MAX_VALUE;
    int[] coverageArray = new int[this.session.chartData.getOriginalTimeseries().length];
    for (GrammarRuleRecord r : this.session.chartData.getGrammarRules()) {
        if (0 == r.ruleNumber()) {
            // skip R0
            continue;
        }
        ArrayList<RuleInterval> occurrences = this.session.chartData.getRulePositionsByRuleNum(r.ruleNumber());
        for (RuleInterval i : occurrences) {
            int start = i.getStart();
            int end = i.getEnd();
            for (int j = start; j < end; j++) {
                if (CoverageCountStrategy.COUNT.equals(this.session.countStrategy)) {
                    coverageArray[j] = coverageArray[j] + 1;
                } else if (CoverageCountStrategy.LEVEL.equals(this.session.countStrategy)) {
                    coverageArray[j] = coverageArray[j] + r.getRuleLevel();
                } else if (CoverageCountStrategy.OCCURRENCE.equals(this.session.countStrategy)) {
                    coverageArray[j] = coverageArray[j] + r.getOccurrences().size();
                } else if (CoverageCountStrategy.YIELD.equals(this.session.countStrategy)) {
                    coverageArray[j] = coverageArray[j] + r.getRuleYield();
                } else if (CoverageCountStrategy.PRODUCT.equals(this.session.countStrategy)) {
                    coverageArray[j] = coverageArray[j] + r.getRuleLevel() * r.getOccurrences().size();
                }
                if (maxObservedCoverage < coverageArray[j]) {
                    maxObservedCoverage = coverageArray[j];
                }
                if (minObservedCoverage > coverageArray[j]) {
                    minObservedCoverage = coverageArray[j];
                }
            }
        }
    }
    // since we know the maximal coverage value, we can compute the increment for a single coverage
    // interval
    double covIncrement = 1.0 / (double) maxObservedCoverage;
    for (GrammarRuleRecord r : this.session.chartData.getGrammarRules()) {
        if (0 == r.ruleNumber()) {
            // skip the R0
            continue;
        }
        ArrayList<RuleInterval> occurrences = r.getRuleIntervals();
        for (RuleInterval i : occurrences) {
            IntervalMarker marker = new IntervalMarker(i.getStart(), i.getEnd());
            marker.setLabelOffsetType(LengthAdjustmentType.EXPAND);
            marker.setPaint(Color.BLUE);
            // marker.setAlpha((float) 0.05);
            if (CoverageCountStrategy.COUNT.equals(this.session.countStrategy)) {
                marker.setAlpha((float) covIncrement);
            } else if (CoverageCountStrategy.LEVEL.equals(this.session.countStrategy)) {
                marker.setAlpha((float) covIncrement * r.getRuleLevel());
            } else if (CoverageCountStrategy.OCCURRENCE.equals(this.session.countStrategy)) {
                marker.setAlpha((float) covIncrement * r.getOccurrences().size());
            } else if (CoverageCountStrategy.YIELD.equals(this.session.countStrategy)) {
                marker.setAlpha((float) covIncrement * r.getRuleYield());
            } else if (CoverageCountStrategy.PRODUCT.equals(this.session.countStrategy)) {
                marker.setAlpha((float) covIncrement * (r.getRuleLevel() * r.getOccurrences().size()));
            }
            marker.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
            marker.setLabelPaint(Color.green);
            marker.setLabelAnchor(RectangleAnchor.TOP_LEFT);
            marker.setLabelTextAnchor(TextAnchor.TOP_LEFT);
            timeseriesPlot.addDomainMarker(marker, Layer.BACKGROUND);
        }
    }
    int sum = 0;
    for (int d : coverageArray) sum += d;
    double meanCoverage = 1.0d * sum / coverageArray.length;
    DecimalFormat df = new DecimalFormat("#.00");
    String annotationString = "min C:" + minObservedCoverage + ", max C:" + maxObservedCoverage + ", mean C:" + df.format(meanCoverage);
    NumberAxis domain = (NumberAxis) this.timeseriesPlot.getDomainAxis();
    Range domainRange = domain.getRange();
    NumberAxis range = (NumberAxis) this.timeseriesPlot.getRangeAxis();
    Range rangeRange = range.getRange();
    XYTextAnnotation a = new XYTextAnnotation(annotationString, domainRange.getLowerBound() + domainRange.getLength() / 100, rangeRange.getLowerBound() + 0.5);
    a.setTextAnchor(TextAnchor.BOTTOM_LEFT);
    a.setPaint(Color.RED);
    a.setOutlinePaint(Color.BLACK);
    a.setOutlineVisible(true);
    a.setFont(new java.awt.Font("SansSerif", java.awt.Font.BOLD, 14));
    this.timeseriesPlot.addAnnotation(a);
    // not sure if I need this
    //
    revalidate();
    repaint();
    // and finally save the coverage curve
    //
    this.saveRuleDensityCurve(coverageArray);
}
Example 63
Project: limpet-master  File: ChartBuilder.java View source code
/**
   * 
   * @param subplot
   *          target plot for annotation
   * @param annotations
   *          annotation list to be added to plot eg: Marker,Zone
   * @param isRangeAnnotation
   *          is annotation added to Range or Domain
   */
private static void addAnnotationToPlot(final XYPlot subplot, final List<AbstractAnnotation> annotations, final boolean isRangeAnnotation) {
    for (final AbstractAnnotation annotation : annotations) {
        final Color color = annotation.getColor();
        if (annotation instanceof info.limpet.stackedcharts.model.Marker) {
            // build value Marker
            final info.limpet.stackedcharts.model.Marker marker = (info.limpet.stackedcharts.model.Marker) annotation;
            final Marker mrk = new ValueMarker(marker.getValue());
            mrk.setLabel(annotation.getName());
            mrk.setPaint(color == null ? Color.GRAY : color);
            // move Text Anchor
            mrk.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
            mrk.setLabelAnchor(RectangleAnchor.TOP);
            mrk.setLabelOffset(new RectangleInsets(2, 2, 2, 2));
            if (isRangeAnnotation) {
                subplot.addRangeMarker(mrk, Layer.FOREGROUND);
            } else {
                subplot.addDomainMarker(mrk, Layer.FOREGROUND);
            }
        } else if (annotation instanceof info.limpet.stackedcharts.model.Zone) {
            // build Zone
            final info.limpet.stackedcharts.model.Zone zone = (info.limpet.stackedcharts.model.Zone) annotation;
            final Marker mrk = new IntervalMarker(zone.getStart(), zone.getEnd());
            mrk.setLabel(annotation.getName());
            if (color != null) {
                mrk.setPaint(color);
            }
            // move Text & Label Anchor
            mrk.setLabelTextAnchor(TextAnchor.CENTER);
            mrk.setLabelAnchor(RectangleAnchor.CENTER);
            mrk.setLabelOffset(new RectangleInsets(2, 2, 2, 2));
            if (isRangeAnnotation) {
                subplot.addRangeMarker(mrk, Layer.FOREGROUND);
            } else {
                subplot.addDomainMarker(mrk, Layer.FOREGROUND);
            }
        } else if (annotation instanceof info.limpet.stackedcharts.model.ScatterSet) {
            // build ScatterSet
            final info.limpet.stackedcharts.model.ScatterSet marker = (info.limpet.stackedcharts.model.ScatterSet) annotation;
            final EList<Datum> datums = marker.getDatums();
            boolean addLabel = true;
            for (final Datum datum : datums) {
                final Marker mrk = new ValueMarker(datum.getVal());
                // only add label for first Marker
                if (addLabel) {
                    mrk.setLabel(annotation.getName());
                    addLabel = false;
                }
                final Color thisColor = datum.getColor();
                final Color colorToUse = thisColor == null ? color : thisColor;
                // apply some transparency to the color
                if (colorToUse != null) {
                    final Color transColor = new Color(colorToUse.getRed(), colorToUse.getGreen(), colorToUse.getBlue(), 120);
                    mrk.setPaint(transColor);
                }
                // move Text Anchor
                mrk.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
                mrk.setLabelAnchor(RectangleAnchor.TOP);
                mrk.setLabelOffset(new RectangleInsets(2, 2, 2, 2));
                if (isRangeAnnotation) {
                    subplot.addRangeMarker(mrk, Layer.FOREGROUND);
                } else {
                    subplot.addDomainMarker(mrk, Layer.FOREGROUND);
                }
            }
        }
    }
}
Example 64
Project: optaplanner-master  File: BenchmarkReport.java View source code
private BarRenderer createBarChartRenderer(NumberFormat numberFormat) {
    BarRenderer renderer = new BarRenderer();
    ItemLabelPosition positiveItemLabelPosition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
    renderer.setBasePositiveItemLabelPosition(positiveItemLabelPosition);
    ItemLabelPosition negativeItemLabelPosition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
    renderer.setBaseNegativeItemLabelPosition(negativeItemLabelPosition);
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator(StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, numberFormat));
    renderer.setBaseItemLabelsVisible(true);
    return renderer;
}
Example 65
Project: platform_sdk-master  File: NetworkPanel.java View source code
/**
     * Create chart of recent network activity.
     */
private void createChart() {
    mChart = ChartFactory.createTimeSeriesChart(null, null, null, null, false, false, false);
    // create backing datasets and series
    mRxTotalSeries = new TimeSeries("RX total");
    mTxTotalSeries = new TimeSeries("TX total");
    mRxTotalSeries.setMaximumItemAge(HISTORY_MILLIS);
    mTxTotalSeries.setMaximumItemAge(HISTORY_MILLIS);
    mTotalCollection = new TimeSeriesCollection();
    mTotalCollection.addSeries(mRxTotalSeries);
    mTotalCollection.addSeries(mTxTotalSeries);
    mRxDetailDataset = new LiveTimeTableXYDataset();
    mTxDetailDataset = new LiveTimeTableXYDataset();
    mTotalRenderer = new XYAreaRenderer(XYAreaRenderer.AREA);
    mRenderer = new StackedXYAreaRenderer2();
    final XYPlot xyPlot = mChart.getXYPlot();
    xyPlot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
    xyPlot.setDataset(0, mTotalCollection);
    xyPlot.setDataset(1, mRxDetailDataset);
    xyPlot.setDataset(2, mTxDetailDataset);
    xyPlot.setRenderer(0, mTotalRenderer);
    xyPlot.setRenderer(1, mRenderer);
    xyPlot.setRenderer(2, mRenderer);
    // we control domain axis manually when taking samples
    mDomainAxis = xyPlot.getDomainAxis();
    mDomainAxis.setAutoRange(false);
    final NumberAxis axis = new NumberAxis();
    axis.setNumberFormatOverride(new BytesFormat(true));
    axis.setAutoRangeMinimumSize(50);
    xyPlot.setRangeAxis(axis);
    xyPlot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    // draw thick line to separate RX versus TX traffic
    xyPlot.addRangeMarker(new ValueMarker(0, java.awt.Color.BLACK, new java.awt.BasicStroke(2)));
    // label to indicate that positive axis is RX traffic
    final ValueMarker rxMarker = new ValueMarker(0);
    rxMarker.setStroke(new java.awt.BasicStroke(0));
    rxMarker.setLabel("RX");
    rxMarker.setLabelFont(rxMarker.getLabelFont().deriveFont(30f));
    rxMarker.setLabelPaint(java.awt.Color.LIGHT_GRAY);
    rxMarker.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
    rxMarker.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
    xyPlot.addRangeMarker(rxMarker);
    // label to indicate that negative axis is TX traffic
    final ValueMarker txMarker = new ValueMarker(0);
    txMarker.setStroke(new java.awt.BasicStroke(0));
    txMarker.setLabel("TX");
    txMarker.setLabelFont(txMarker.getLabelFont().deriveFont(30f));
    txMarker.setLabelPaint(java.awt.Color.LIGHT_GRAY);
    txMarker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
    txMarker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
    xyPlot.addRangeMarker(txMarker);
    mChartComposite = new ChartComposite(mPanel, SWT.BORDER, mChart, ChartComposite.DEFAULT_WIDTH, ChartComposite.DEFAULT_HEIGHT, ChartComposite.DEFAULT_MINIMUM_DRAW_WIDTH, ChartComposite.DEFAULT_MINIMUM_DRAW_HEIGHT, 4096, 4096, true, true, true, true, false, true);
    final FormData data = new FormData();
    data.top = new FormAttachment(mHeader);
    data.left = new FormAttachment(0);
    data.bottom = new FormAttachment(70);
    data.right = new FormAttachment(100);
    mChartComposite.setLayoutData(data);
}
Example 66
Project: sportstracker-master  File: OverviewDialogController.java View source code
/**
     * Draws the Overview diagram according to the current selections.
     */
private void updateDiagram() {
    updateOptionControls();
    // get selected time range and value type and its name to display
    TimeRangeType timeType = cbTimeRange.getValue();
    ValueType vType = cbDisplay.getValue();
    String valueTypeNameWithUnits = vType.getNameWithUnitSystem(context.getFormatUtils());
    int year = spYear.getValue();
    // create a table of all time series (graphs) and the appropriate colors
    TimeTableXYDataset dataset = new TimeTableXYDataset();
    java.util.List<java.awt.Color> lGraphColors = new ArrayList<>();
    // setup TimeSeries in the diagram (done in different ways for all the value types)
    if (vType == ValueType.SPORTSUBTYPE) {
        setupSportSubTypeDiagram(dataset, lGraphColors);
    } else if (vType == ValueType.EQUIPMENT) {
        setupEquipmentDiagram(dataset, lGraphColors);
    } else if (vType == ValueType.WEIGHT) {
        setupWeightDiagram(dataset, lGraphColors);
    } else {
        setupExerciseDiagram(dataset, lGraphColors);
    }
    // create chart
    JFreeChart chart = //
    ChartFactory.createTimeSeriesChart(// Title
    null, // Y-axis label
    null, // X-axis label
    valueTypeNameWithUnits, // primary dataset
    dataset, // display legend
    true, // display tooltips
    true, // URLs
    false);
    // render unique filled shapes for each graph
    XYPlot plot = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
    renderer.setBaseShapesVisible(true);
    renderer.setBaseShapesFilled(true);
    // set color for sport type series
    for (int i = 0; i < lGraphColors.size(); i++) {
        java.awt.Color tempColor = lGraphColors.get(i);
        renderer.setSeriesPaint(i, tempColor);
    }
    // setup date format for tooltips and time (bottom) axis
    String dateFormatTooltip;
    String dateFormatAxis;
    DateTickUnit dateTickUnit;
    switch(timeType) {
        case LAST_12_MONTHS:
            dateFormatTooltip = "MMMMM yyyy";
            dateFormatAxis = "MMM";
            dateTickUnit = new DateTickUnit(DateTickUnitType.MONTH, 1);
            break;
        case MONTHS_OF_YEAR:
            dateFormatTooltip = "MMMMM";
            dateFormatAxis = "MMM";
            dateTickUnit = new DateTickUnit(DateTickUnitType.MONTH, 1);
            break;
        case WEEKS_OF_YEAR:
            // Workaround for a JFreeChart formating problem: years are used
            // instead of weeks for the bottom axis, otherwise there will be
            // format problems on the axis (the first week is often "52")
            dateFormatTooltip = "yy";
            dateFormatAxis = "yy";
            dateTickUnit = new DateTickUnit(DateTickUnitType.YEAR, 2);
            break;
        default:
            // LAST_10_YEARS
            dateFormatTooltip = "yyyy";
            dateFormatAxis = "yyyy";
            dateTickUnit = new DateTickUnit(DateTickUnitType.YEAR, 1);
            break;
    }
    // setup tooltips: must display month, week or year and the value only
    String toolTipFormat = "{1}: {2}";
    renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator(toolTipFormat, new SimpleDateFormat(dateFormatTooltip), new DecimalFormat()) {

        @Override
        public String generateToolTip(XYDataset dataset, int series, int item) {
            return dataset.getSeriesKey(series) + ", " + super.generateToolTip(dataset, series, item);
        }
    });
    // (only for exercises based value types, stacked mode can be selected only there)
    if (cbSportTypeMode.isVisible() && cbSportTypeMode.getValue() == OverviewType.EACH_STACKED) {
        renderer.setSeriesLinesVisible(0, false);
        renderer.setSeriesShapesVisible(0, false);
        renderer.setSeriesVisibleInLegend(0, false);
        // actual dataset
        dataset = new TimeTableXYDataset();
        lGraphColors = new ArrayList<>();
        // create a separate graph for each sport type
        for (SportType sportType : document.getSportTypeList()) {
            addExerciseTimeSeries(dataset, timeType, year, vType, sportType);
            lGraphColors.add(ColorUtils.toAwtColor(sportType.getColor()));
        }
        plot.setDataset(1, dataset);
        // actual stacked renderer
        StackedRenderer stackedRenderer = new StackedRenderer();
        // set color for sport type series
        for (int i = 0; i < lGraphColors.size(); i++) {
            java.awt.Color tempColor = lGraphColors.get(i);
            stackedRenderer.setSeriesPaint(i, tempColor);
        }
        stackedRenderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator(toolTipFormat, new SimpleDateFormat(dateFormatTooltip), new DecimalFormat()) {

            @Override
            public String generateToolTip(XYDataset dataset, int series, int item) {
                return dataset.getSeriesKey(series) + ", " + super.generateToolTip(dataset, series, item);
            }
        });
        plot.setRenderer(1, stackedRenderer);
    }
    // set date format of time (bottom) axis
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setDateFormatOverride(new SimpleDateFormat(dateFormatAxis));
    if (dateTickUnit != null) {
        axis.setTickUnit(dateTickUnit);
    }
    // (otherwise the range is double minimum to double maximum)
    if (plot.getRangeAxis().getRange().getCentralValue() == 0d) {
        plot.getRangeAxis().setRange(new Range(0, 10));
    }
    // add vertical year break marker when displaying the last 12 months
    if (timeType == TimeRangeType.LAST_12_MONTHS) {
        LocalDate firstDayOfYear = LocalDate.now().with(TemporalAdjusters.firstDayOfYear());
        LocalDate middleOfDecemberOfLastYear = firstDayOfYear.minusDays(15);
        Date dateMiddleOfDecemberOfLastYear = Date310Utils.localDateToDate(middleOfDecemberOfLastYear);
        ValueMarker newYearMarker = new ValueMarker(dateMiddleOfDecemberOfLastYear.getTime());
        newYearMarker.setPaint(new java.awt.Color(0x00b000));
        newYearMarker.setStroke(new java.awt.BasicStroke(0.8f));
        newYearMarker.setLabel(String.valueOf(firstDayOfYear.getYear()));
        newYearMarker.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
        newYearMarker.setLabelTextAnchor(TextAnchor.TOP_LEFT);
        plot.addDomainMarker(newYearMarker);
    }
    // display legend next to the diagram on the right side
    chart.getLegend().setPosition(RectangleEdge.RIGHT);
    ChartUtils.customizeChart(chart);
    // display chart in viewer (chart viewer will be initialized lazily)
    if (chartViewer == null) {
        chartViewer = new ChartViewer(chart);
        spDiagram.getChildren().addAll(chartViewer);
    } else {
        chartViewer.setChart(chart);
    }
}
Example 67
Project: Trackprofiler-master  File: TrackProfilerFrame.java View source code
private void _drawSelectedPoint(XYPlot xyplot, int position) {
    TrackPoint point = this.getTrack().getPointAt(position);
    // Strelicu crtamo samo ako je samo jedna tocka oznacena:
    if (this.startSelectedPoints < 0 || this.endSelectedPoints < 0 || this.startSelectedPoints == this.endSelectedPoints) {
        double angle = point.getAngle();
        XYPointerAnnotation xypointerannotation = new //$NON-NLS-1$
        XYPointerAnnotation(//$NON-NLS-1$
        "", //$NON-NLS-1$
        point.getPosition(), point.getElevation(), Math.PI - angle);
        xypointerannotation.setTipRadius(3.0D);
        xypointerannotation.setBaseRadius(30);
        xypointerannotation.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        xypointerannotation.setFont(GUIConstants.SANS_SERIF_11);
        if (angle > 0) {
            xypointerannotation.setPaint(Color.red);
        } else if (angle < 0) {
            xypointerannotation.setPaint(Color.green);
        } else {
            xypointerannotation.setPaint(Color.gray);
        }
        //$NON-NLS-1$
        xypointerannotation.setText((TrackProfilerMath.round(100 * angle, 1)) + " %");
        xyplot.addAnnotation(xypointerannotation);
    }
    ValueMarker valuemarker = new ValueMarker(point.getPosition());
    valuemarker.setLabelOffsetType(LengthAdjustmentType.NO_CHANGE);
    valuemarker.setStroke(new BasicStroke(1.0F));
    if (this.startSelectedPoints != this.endSelectedPoints && position == this.startSelectedPoints) {
        valuemarker.setLabelPaint(Color.blue);
        valuemarker.setLabelAnchor(RectangleAnchor.BOTTOM_LEFT);
        valuemarker.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT);
        // Ispisuje udaljenost i kut:
        TrackPoint t1 = this.getTrack().getPointAt(this.startSelectedPoints);
        TrackPoint t2 = this.getTrack().getPointAt(this.endSelectedPoints);
        double distance3D = TrackProfilerMath.round(t1.getPosition() - t2.getPosition(), 1);
        //$NON-NLS-1$
        String angle = Math.abs(TrackProfilerMath.round(t1.getAngle(t2) * 100, 1)) + "%";
        //$NON-NLS-1$
        String label = Message.get(Messages.SELECTED_DISTANCE_LABEL) + distance3D + ", " + Message.get(Messages.SELECTED_ANGLE_LABEL) + angle;
        //$NON-NLS-1$
        valuemarker.setLabel("  " + label);
        valuemarker.setLabelFont(GUIConstants.SANS_SERIF_11);
    }
    xyplot.addDomainMarker(valuemarker);
}
Example 68
Project: bi-platform-v2-master  File: JFreeChartEngine.java View source code
private static JFreeChart createBarChart(final CategoryDatasetChartDefinition chartDefinition) {
    // TODO Make the following accessible from the chartDefinition
    String categoryAxisLabel = null;
    String valueAxisLabel = null;
    boolean tooltips = true;
    boolean urls = true;
    // -----------------------------------------------------------
    String title = chartDefinition.getTitle();
    boolean legend = chartDefinition.isLegendIncluded();
    PlotOrientation orientation = chartDefinition.getOrientation();
    CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel);
    ValueAxis valueAxis = new NumberAxis(valueAxisLabel);
    BarRenderer renderer = null;
    // Determine the type of renderer to use
    if (chartDefinition.isStacked() || chartDefinition.isThreeD()) {
        if (chartDefinition.isStacked() && chartDefinition.isThreeD()) {
            renderer = new StackedBarRenderer3D();
        } else if (chartDefinition.isStacked()) {
            renderer = new StackedBarRenderer();
        } else {
            renderer = new BarRenderer3D();
        }
    } else {
        renderer = new BarRenderer();
    }
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        renderer.setNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        renderer.setNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }
    if (chartDefinition.getMaxBarWidth() != null) {
        renderer.setMaximumBarWidth(chartDefinition.getMaxBarWidth().doubleValue());
    }
    CategoryPlot plot = new CategoryPlot(chartDefinition, categoryAxis, valueAxis, renderer);
    JFreeChartEngine.updatePlot(plot, chartDefinition);
    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);
    return chart;
}
Example 69
Project: pentaho-platform-master  File: JFreeChartEngine.java View source code
private static JFreeChart createBarChart(final CategoryDatasetChartDefinition chartDefinition) {
    // TODO Make the following accessible from the chartDefinition
    String categoryAxisLabel = null;
    String valueAxisLabel = null;
    boolean tooltips = true;
    boolean urls = true;
    // -----------------------------------------------------------
    String title = chartDefinition.getTitle();
    boolean legend = chartDefinition.isLegendIncluded();
    PlotOrientation orientation = chartDefinition.getOrientation();
    CategoryAxis categoryAxis = new CategoryAxis(categoryAxisLabel);
    ValueAxis valueAxis = new NumberAxis(valueAxisLabel);
    BarRenderer renderer = null;
    // Determine the type of renderer to use
    if (chartDefinition.isStacked() || chartDefinition.isThreeD()) {
        if (chartDefinition.isStacked() && chartDefinition.isThreeD()) {
            renderer = new StackedBarRenderer3D();
        } else if (chartDefinition.isStacked()) {
            renderer = new StackedBarRenderer();
        } else {
            renderer = new BarRenderer3D();
        }
    } else {
        renderer = new BarRenderer();
    }
    if (orientation == PlotOrientation.HORIZONTAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
        renderer.setNegativeItemLabelPosition(position2);
    } else if (orientation == PlotOrientation.VERTICAL) {
        ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
        renderer.setPositiveItemLabelPosition(position1);
        ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
        renderer.setNegativeItemLabelPosition(position2);
    }
    if (tooltips) {
        renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    }
    if (urls) {
        renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator());
    }
    if (chartDefinition.getMaxBarWidth() != null) {
        renderer.setMaximumBarWidth(chartDefinition.getMaxBarWidth().doubleValue());
    }
    CategoryPlot plot = new CategoryPlot(chartDefinition, categoryAxis, valueAxis, renderer);
    JFreeChartEngine.updatePlot(plot, chartDefinition);
    JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, legend);
    return chart;
}
Example 70
Project: openbd-core-master  File: cfCHART.java View source code
/*
	 * getCategoryPlot
	 */
private CategoryPlot getCategoryPlot(List<cfCHARTSERIESData> series, String xAxisTitle, String yAxisTitle, String labelFormat, boolean bShowMarkers, int markerSize, boolean bShow3D, String tipStyle, String drillDownUrl, int xOffset, int yOffset, int yAxisUnits, String seriesPlacement, boolean bSortXAxis, int height, String[] yAxisSymbols, int gridLines) throws cfmRunTimeException {
    // Create a category plot
    CategoryPlot plot = new CategoryPlot();
    // Set the domain axis (the x-axis)
    org.jfree.chart.axis.CategoryAxis categoryAxis;
    if (bShow3D)
        categoryAxis = new CategoryAxis3D(xAxisTitle);
    else
        categoryAxis = new CategoryAxis(xAxisTitle);
    plot.setDomainAxis(categoryAxis);
    // Set the range axis (the y-axis)
    ValueAxis valueAxis;
    DateFormat dateFormat = null;
    NumberFormat numberFormat = null;
    // Ignore a label format of date if the y-axis is using symbols
    if (labelFormat.equals("date") && (yAxisSymbols == null)) {
        valueAxis = new DateAxis(yAxisTitle);
        dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
        ((DateAxis) valueAxis).setDateFormatOverride(dateFormat);
    } else {
        if (yAxisSymbols != null) {
            valueAxis = new SymbolAxis(yAxisTitle, yAxisSymbols);
            ((SymbolAxis) valueAxis).setGridBandsVisible(false);
            ((SymbolAxis) valueAxis).setAutoRangeStickyZero(true);
        } else if (bShow3D) {
            valueAxis = new NumberAxis3D(yAxisTitle);
        } else {
            valueAxis = new NumberAxis(yAxisTitle);
        }
        if (labelFormat.equals("currency")) {
            ((NumberAxis) valueAxis).setNumberFormatOverride(NumberFormat.getCurrencyInstance());
            numberFormat = NumberFormat.getCurrencyInstance();
        } else if (labelFormat.equals("percent")) {
            numberFormat = NumberFormat.getPercentInstance();
            // without this change .11443
            numberFormat.setMaximumFractionDigits(3);
            // would be displayed as 11%
            // instead of 11.443%
            ((NumberAxis) valueAxis).setNumberFormatOverride(numberFormat);
        } else {
            numberFormat = NumberFormat.getInstance();
        }
        if (yAxisUnits != 0)
            ((NumberAxis) valueAxis).setTickUnit(new NumberTickUnit(yAxisUnits));
    }
    plot.setRangeAxis(valueAxis);
    // Add a dataset and renderer for each series
    int barChartDatasetIndex = -1;
    int hBarChartDatasetIndex = -1;
    int num = 0;
    MinMaxData minMax = new MinMaxData();
    for (int i = 0; i < series.size(); i++) {
        cfCHARTSERIESData seriesData = series.get(i);
        // NOTE: this attribute is only used with category charts.
        if (bSortXAxis)
            seriesData.sort();
        DefaultCategoryDataset dataset;
        if ((barChartDatasetIndex != -1) && (seriesData.getType().equals("bar"))) {
            dataset = (DefaultCategoryDataset) plot.getDataset(barChartDatasetIndex);
            addSeriesDataToDataset(seriesData, dataset, minMax);
            // Set the paint style for this series
            setPaintStyle(seriesData.getPaintStyle(), plot.getRenderer(barChartDatasetIndex), dataset.getRowCount() - 1, height);
            // Add the color list for this series to the custom color renderer
            CustomColorRenderer cr = (CustomColorRenderer) plot.getRenderer(barChartDatasetIndex);
            cr.addColors(getColorList(seriesData));
            continue;
        } else if ((hBarChartDatasetIndex != -1) && (seriesData.getType().equals("horizontalbar"))) {
            dataset = (DefaultCategoryDataset) plot.getDataset(hBarChartDatasetIndex);
            addSeriesDataToDataset(seriesData, dataset, minMax);
            // Set the paint style for this series
            setPaintStyle(seriesData.getPaintStyle(), plot.getRenderer(hBarChartDatasetIndex), dataset.getRowCount() - 1, height);
            // Add the color list for this series to the custom color renderer
            CustomColorRenderer cr = (CustomColorRenderer) plot.getRenderer(hBarChartDatasetIndex);
            cr.addColors(getColorList(seriesData));
            continue;
        } else {
            dataset = new DefaultCategoryDataset();
            addSeriesDataToDataset(seriesData, dataset, minMax);
        }
        plot.setDataset(num, dataset);
        AbstractCategoryItemRenderer renderer = null;
        if (seriesData.getType().equals("bar")) {
            plot.setOrientation(PlotOrientation.VERTICAL);
            renderer = getBarRenderer(seriesPlacement, bShow3D, xOffset, yOffset, getColorList(seriesData));
            ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER);
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE6, TextAnchor.TOP_CENTER);
            renderer.setNegativeItemLabelPosition(position2);
            // The margin between items
            ((BarRenderer) renderer).setItemMargin(0.0);
            // in the same category
            // The margin between each category
            categoryAxis.setCategoryMargin(0.2);
            barChartDatasetIndex = num;
        } else if (seriesData.getType().equals("horizontalbar")) {
            plot.setOrientation(PlotOrientation.HORIZONTAL);
            plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            renderer = getBarRenderer(seriesPlacement, bShow3D, xOffset, yOffset, getColorList(seriesData));
            if (bShow3D) {
                // change rendering order to ensure that bar overlapping is the
                // right way around
                plot.setRowRenderingOrder(org.jfree.util.SortOrder.DESCENDING);
                plot.setColumnRenderingOrder(org.jfree.util.SortOrder.DESCENDING);
            }
            ItemLabelPosition position1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE3, TextAnchor.CENTER_LEFT);
            renderer.setPositiveItemLabelPosition(position1);
            ItemLabelPosition position2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE9, TextAnchor.CENTER_RIGHT);
            renderer.setNegativeItemLabelPosition(position2);
            // The margin between items
            ((BarRenderer) renderer).setItemMargin(0.0);
            // in the same category
            // The margin between each category
            categoryAxis.setCategoryMargin(0.2);
            hBarChartDatasetIndex = num;
        } else if (seriesData.getType().equals("line")) {
            if (bShow3D) {
                renderer = new LineRenderer3D();
                ((LineRenderer3D) renderer).setXOffset(xOffset);
                ((LineRenderer3D) renderer).setYOffset(yOffset);
            } else {
                renderer = new LineAndShapeRenderer(true, false);
            }
            // Enable/Disable displaying of markers
            ((LineAndShapeRenderer) renderer).setShapesVisible(bShowMarkers);
            // Set the shape of the markers based on the markerSize value
            ((LineAndShapeRenderer) renderer).setShape(getMarker(seriesData.getMarkerStyle(), markerSize));
        } else if (seriesData.getType().equals("area")) {
            if (seriesPlacement.equals("stacked"))
                // this doesn't work for some
                renderer = new StackedAreaRenderer();
            else
                // reason
                renderer = new AreaRenderer();
            // Truncate the first and last values to match CFMX 7
            ((AreaRenderer) renderer).setEndType(AreaRendererEndType.TRUNCATE);
            categoryAxis.setCategoryMargin(0.0);
        } else if (seriesData.getType().equals("step")) {
            renderer = new CategoryStepRenderer(true);
        } else if (seriesData.getType().equals("scatter")) {
            renderer = new LineAndShapeRenderer(false, true);
            // Set the shape of the markers based on the markerSize value
            ((LineAndShapeRenderer) renderer).setShape(getMarker(seriesData.getMarkerStyle(), markerSize));
        }
        if (!tipStyle.equals("none")) {
            if (dateFormat != null)
                renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator("({0}, {1}) = {2}", dateFormat));
            else
                renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator("({0}, {1}) = {2}", numberFormat));
        }
        if (drillDownUrl != null) {
            if (dateFormat != null)
                renderer.setBaseItemURLGenerator(new com.newatlanta.bluedragon.CategoryURLGenerator(drillDownUrl, dateFormat));
            else
                renderer.setBaseItemURLGenerator(new com.newatlanta.bluedragon.CategoryURLGenerator(drillDownUrl, numberFormat));
        }
        if (seriesData.getSeriesColor() != null)
            renderer.setSeriesPaint(0, convertStringToColor(seriesData.getSeriesColor()));
        String dataLabelStyle = seriesData.getDataLabelStyle();
        if (labelFormat.equals("date")) {
            if (dataLabelStyle.equals("none")) {
                renderer.setItemLabelsVisible(false);
            } else {
                setCategoryItemLabelsData(renderer, seriesData);
                if (dataLabelStyle.equals("value"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{2}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("rowlabel"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{0}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("columnlabel"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{1}", dateFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("pattern"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{1} {2}", dateFormat, yAxisSymbols));
                else
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator(dataLabelStyle, dateFormat, yAxisSymbols));
            }
        } else {
            if (dataLabelStyle.equals("none")) {
                renderer.setItemLabelsVisible(false);
            } else {
                setCategoryItemLabelsData(renderer, seriesData);
                if (dataLabelStyle.equals("value"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{2}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("rowlabel"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{0}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("columnlabel"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{1}", numberFormat, yAxisSymbols));
                else if (dataLabelStyle.equals("pattern"))
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator("{1} {2} ({3} of {4})", numberFormat, yAxisSymbols));
                else
                    renderer.setItemLabelGenerator(new CategoryItemLabelGenerator(dataLabelStyle, numberFormat, yAxisSymbols));
            }
        }
        // Add the renderer to the plot.
        // NOTE: this must be done before the setPaintStyle() call so the
        // DrawingSupplier object
        // will be set up properly for the generation of default colors.
        plot.setRenderer(num, renderer);
        // Set the paint style for this series (series 0)
        if (seriesData.getType().equals("bar") || seriesData.getType().equals("horizontalbar") || seriesData.getType().equals("area"))
            setPaintStyle(seriesData.getPaintStyle(), renderer, 0, height);
        num++;
    }
    // If gridLines was specified then we need to calculate the yAxisUnits
    if ((gridLines != -1) && (valueAxis instanceof NumberAxis)) {
        // Calculate the yAxisUnits we need to use to create the number of
        // gridLines
        yAxisUnits = calculateYAxisUnits(gridLines, minMax);
        // Set the yAxisUnits
        ((NumberAxis) valueAxis).setTickUnit(new NumberTickUnit(yAxisUnits));
    }
    return plot;
}
Example 71
Project: openaltimeter-downloader-master  File: AltimeterAnnotationManager.java View source code
private XYHeightAnnotation addHeightAnnotationIntenal(double time, double heightInPlotUnits, Paint color) {
    XYHeightAnnotation annotation = new XYHeightAnnotation(String.format("%.1f", heightInPlotUnits), time, heightInPlotUnits, color);
    annotation.setTextAnchor(TextAnchor.BOTTOM_CENTER);
    cp.getChart().getXYPlot().addAnnotation(annotation);
    return annotation;
}