Example usage for org.jfree.chart ChartUtilities writeChartAsPNG

List of usage examples for org.jfree.chart ChartUtilities writeChartAsPNG

Introduction

In this page you can find the example usage for org.jfree.chart ChartUtilities writeChartAsPNG.

Prototype

public static void writeChartAsPNG(OutputStream out, JFreeChart chart, int width, int height)
        throws IOException 

Source Link

Document

Writes a chart to an output stream in PNG format.

Usage

From source file:net.commerce.zocalo.freechart.ChartTest.java

public void testSimpleBarChart() throws IOException {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    String seriesKey = "prices";
    dataset.addValue(.2, seriesKey, "apples");
    dataset.addValue(.15, seriesKey, "bananas");
    dataset.addValue(.18, seriesKey, "cherries");
    dataset.addValue(.32, seriesKey, "watermelon");
    dataset.addValue(.06, seriesKey, "peaches");
    dataset.addValue(.09, seriesKey, "persimmons");

    int hSize = 300;
    int vSize = 150;
    JFreeChart chart = ChartGenerator.buildBarChart(dataset, PlotOrientation.HORIZONTAL, hSize, vSize);

    File jpgFile = newEmptyFile(".", "BarChart.jpg");
    File pngFile = newEmptyFile(".", "BarChart.png");
    assertFalse(jpgFile.exists());/*  w  w w  .ja  va 2s .c  om*/
    assertFalse(pngFile.exists());

    OutputStream jpgStream = new FileOutputStream(jpgFile);
    OutputStream pngStream = new FileOutputStream(pngFile);

    ChartUtilities.writeChartAsJPEG(jpgStream, chart, hSize, vSize);
    ChartUtilities.writeChartAsPNG(pngStream, chart, hSize, vSize);

    assertTrue(jpgFile.exists());
    assertTrue(pngFile.exists());
    jpgFile.delete();
    pngFile.delete();
}

From source file:name.wramner.jmstools.analyzer.DataProvider.java

/**
 * Get a base64-encoded image for inclusion in an img tag with a chart with number of produced and consumed messages
 * per minute.//  w ww.  j av a  2 s . c  om
 *
 * @return chart as base64 string.
 */
public String getBase64MessagesPerMinuteImage() {
    TimeSeries timeSeriesConsumed = new TimeSeries("Consumed");
    TimeSeries timeSeriesProduced = new TimeSeries("Produced");
    TimeSeries timeSeriesTotal = new TimeSeries("Total");
    for (PeriodMetrics m : getMessagesPerMinute()) {
        Minute minute = new Minute(m.getPeriodStart());
        timeSeriesConsumed.add(minute, m.getConsumed());
        timeSeriesProduced.add(minute, m.getProduced());
        timeSeriesTotal.add(minute, m.getConsumed() + m.getProduced());
    }
    TimeSeriesCollection timeSeriesCollection = new TimeSeriesCollection(timeSeriesConsumed);
    timeSeriesCollection.addSeries(timeSeriesProduced);
    timeSeriesCollection.addSeries(timeSeriesTotal);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        JFreeChart chart = ChartFactory.createTimeSeriesChart("Messages per minute", "Time", "Messages",
                timeSeriesCollection);
        chart.getPlot().setBackgroundPaint(Color.WHITE);
        ChartUtilities.writeChartAsPNG(bos, chart, 1024, 500);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
    return "data:image/png;base64," + Base64.getEncoder().encodeToString(bos.toByteArray());
}

From source file:com.vectorprint.report.jfree.ChartBuilder.java

public void save(OutputStream img, FILETYPE type, int width, int height) throws IOException {
    switch (type) {
    case JPEG://from w w w. java  2  s. c  om
        ChartUtilities.writeChartAsJPEG(img, chart, width, height);

        break;

    case PNG:
        ChartUtilities.writeChartAsPNG(img, chart, width, height);

        break;
    }
}

From source file:gov.nih.nci.rembrandt.web.taglib.KaplanMeierPlotTag.java

public int doStartTag() {

    ServletRequest request = pageContext.getRequest();
    HttpSession session = pageContext.getSession();
    Object o = request.getAttribute(beanName);
    JspWriter out = pageContext.getOut();
    ServletResponse response = pageContext.getResponse();
    String dataName;//from   w  w  w  . j  a  v  a 2s .  c  o  m
    try {
        dataName = BeanUtils.getSimpleProperty(o, datasetName);
        KaplanMeierStoredData cacheData = (KaplanMeierStoredData) presentationTierCache
                .getSessionGraphingData(session.getId(), dataName);
        JFreeChart chart = CaIntegratorChartFactory
                .getKaplanMeierGraph(cacheData.getPlotPointSeriesCollection());

        RembrandtImageFileHandler imageHandler = new RembrandtImageFileHandler(session.getId(), "png", 700,
                500);
        //The final complete path to be used by the webapplication
        String finalPath = imageHandler.getSessionTempFolder();
        /**
         * Create the actual chart, writing it to the session temp folder
         */
        ChartUtilities.writeChartAsPNG(new FileOutputStream(finalPath), chart, 700, 500);
        /*
         *   This is here to put the thread into a loop while it waits for the
         *   image to be available.  It has an unsophisticated timer but at 
         *   least it is something to avoid an endless loop.
         *  
         */
        boolean imageReady = false;
        int timeout = 1000;
        FileInputStream inputStream = null;
        while (!imageReady) {
            timeout--;
            try {
                inputStream = new FileInputStream(finalPath);
                inputStream.available();
                imageReady = true;
                inputStream.close();
            } catch (IOException ioe) {
                imageReady = false;
                if (inputStream != null) {
                    inputStream.close();
                }
            }
            if (timeout <= 1) {

                break;
            }
        }
        out.print(imageHandler.getImageTag());
        out.print(createLegend(cacheData));
    } catch (IllegalAccessException e1) {
        logger.error(e1);
    } catch (InvocationTargetException e1) {
        logger.error(e1);
    } catch (NoSuchMethodException e1) {
        logger.error(e1);
    } catch (IOException e) {
        logger.error(e);
    } catch (Exception e) {
        logger.error(e);
    } catch (Throwable t) {
        logger.error(t);
    }

    return EVAL_BODY_INCLUDE;
}

From source file:net.brewspberry.front.JFreeGraphServlet.java

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)/*from   ww w.j av a2  s . com*/
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    // Set standard HTTP/1.1 no-cache headers.
    response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");

    // Set standard HTTP/1.0 no-cache header.
    response.setHeader("Pragma", "no-cache");

    response.setDateHeader("Expires", 0);

    // If the request has either width or height attributes, the chart will
    // be attribute-sized
    if (request.getParameter("width") != null) {
        try {
            width = Integer.parseInt((String) request.getParameter("width"));
        } catch (Exception e) {
            width = DEFAULT_WIDTH;

        }
    } else {
        width = DEFAULT_WIDTH;
    }
    if (request.getParameter("height") != null) {
        try {
            height = Integer.parseInt((String) request.getParameter("height"));
        } catch (Exception e) {
            height = DEFAULT_HEIGHT;
        }
    }
    // else default sizes are applied
    else {
        height = DEFAULT_HEIGHT;
    }

    JFreeChart chart = null;

    if (request.getParameter("type") != null) {

        String type = request.getParameter("type");
        List<TemperatureMeasurement> tempList = null;

        switch (type) {

        case "etp":

            Long etapeID = null;
            if (request.getParameter("eid") != null) {

                String eid = request.getParameter("eid");

                etapeID = Long.parseLong(eid);
                Etape etape = etapeService.getElementById(etapeID);

                tempList = tmesService.getTemperatureMeasurementByEtape(etape);
                logger.fine("Got " + tempList.size() + " temp measurements for step " + etapeID);
                List<String> probesList = new ArrayList<String>();

                probesList = getDistinctProbes(tempList);
                logger.fine("Got " + probesList.size() + " temp measurements for step " + etapeID);
                response.setContentType("image/png");

                try {
                    chart = generateChartFromTimeSeries(
                            createDataset(parseTemperatureMeasurements(tempList, probesList), false, true),
                            "DS18B20", "Time", "Temperature", true);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

            break;

        case "bra":

            Long brewID = null;
            tempList = null;
            if (request.getParameter("bid") != null) {

                String bid = request.getParameter("bid");

                brewID = Long.parseLong(bid);

                tempList = brassinService.getElementById(brewID).getBra_temperature_measurement();
                logger.fine("Got " + tempList.size() + " temp measurements for brew " + brewID);
                List<String> probesList = new ArrayList<String>();

                probesList = getDistinctProbes(tempList);
                logger.fine("Got " + probesList.size() + " temp measurements for brew " + brewID);
                response.setContentType("image/png");

                try {
                    chart = generateChartFromTimeSeries(
                            createDataset(parseTemperatureMeasurements(tempList, probesList), false, true),
                            "DS18B20", "Time", "Temperature", true);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            break;

        }
    } else {
        try {
            chart = generateChartFromTimeSeries(
                    createDataset(parseCSVFile(new File(BCHRECTEMP_FIC)), true, false), "DS18B20", "Time",
                    "Temperature", true);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    response.setContentType("image/png");

    OutputStream outputStream = response.getOutputStream();

    try {
        logger.fine("Graph dimensions : " + width + "x" + height);

        ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

From source file:org.activequant.util.charting.Chart.java

/**
 * Persistencifies this chart to a png file. 
 * //from w w w .  j a  va  2  s.c  o m
 * created on 07.05.2006
 * 
 * @param filename
 * @param w
 * @param h
 * @throws Exception
 */
public void renderToPng(String filename, int w, int h) throws Exception {
    FileOutputStream f = new FileOutputStream(filename);
    ChartUtilities.writeChartAsPNG(f, chart, w, h);
}

From source file:com.redhat.rhn.frontend.action.systems.monitoring.ProbeGraphAction.java

private void writeChartToResponse(JFreeChart chartIn, HttpServletResponse resp) throws IOException {
    resp.setContentType(MIME_TYPE);/* w  w w  .j a  va  2  s . co m*/
    try {
        ChartUtilities.writeChartAsPNG(resp.getOutputStream(), chartIn, DEFAULT_CHART_WIDTH,
                DEFAULT_CHART_HEIGHT);
    } catch (IOException e) {
        log.error("Error writing chart to OutputStream.", e);
        throw e;
    }
}

From source file:org.lsug.quota.web.internal.portlet.ServerQuotaWebPortlet.java

@Override
public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse)
        throws IOException, PortletException {

    String type = ParamUtil.getString(resourceRequest, "type", "currentSize");

    StringBundler sb = new StringBundler(5);

    JFreeChart jFreeChart = null;//from  w w  w.  j a  va2s .c o m

    if (type.equals("currentSize")) {
        long classNameId = PortalUtil.getClassNameId(Company.class.getName());

        String orderByCol = "quotaUsed";
        String orderByType = "desc";

        OrderByComparator<Quota> orderByComparator = QuotaUtil.getQuotaOrderByComparator(orderByCol,
                orderByType);
        DefaultPieDataset pieDataset = new DefaultPieDataset();

        try {
            List<Quota> listCompanyQuota = _quotaLocalService.getQuotaByClassNameId(classNameId,
                    QueryUtil.ALL_POS, QueryUtil.ALL_POS, orderByComparator);

            for (Quota quota : listCompanyQuota) {
                if (quota.isEnabled()) {
                    pieDataset.setValue(_companyLocalService.getCompany(quota.getClassPK()).getWebId(),
                            quota.getQuotaUsed());
                }
            }
        } catch (Exception e) {
            LOGGER.error(e);
            throw new PortletException(e);
        }

        ResourceBundle resourceBundle = ResourceBundleUtil.getBundle("content.Language",
                resourceRequest.getLocale(), getClass());

        sb.append(LanguageUtil.get(resourceBundle, "server-current-used-size-diagram-title"));

        jFreeChart = getCurrentSizeJFreeChart(sb.toString(), pieDataset);
    }

    OutputStream outputStream = null;

    resourceResponse.setContentType(ContentTypes.IMAGE_PNG);

    try {
        outputStream = resourceResponse.getPortletOutputStream();
        ChartUtilities.writeChartAsPNG(outputStream, jFreeChart, 400, 200);
    } finally {
        if (outputStream != null) {
            outputStream.close();
        }
    }
}

From source file:ubic.gemma.analysis.preprocess.batcheffects.ComBat.java

/**
 * @param os//w  w  w .jav  a  2s.  c  o m
 * @param empirical
 * @param theory
 */
private void writePlot(OutputStream os, XYSeries empirical, XYSeries theory) {
    // ChartFactory.setChartTheme( StandardChartTheme.createLegacyTheme() );
    XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
    xySeriesCollection.addSeries(empirical);
    xySeriesCollection.addSeries(theory);
    JFreeChart chart = ChartFactory.createXYLineChart("", "Magnitude", "Density", xySeriesCollection,
            PlotOrientation.VERTICAL, false, false, false);
    chart.getXYPlot().setRangeGridlinesVisible(false);
    chart.getXYPlot().setDomainGridlinesVisible(false);
    XYItemRenderer renderer = chart.getXYPlot().getRenderer();
    renderer.setBasePaint(Color.white);

    try {
        int size = 500;
        ChartUtilities.writeChartAsPNG(os, chart, 500, size);
        os.close();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

From source file:presentation.webgui.vitroappservlet.StyleCreator.java

private void previewStyleLegend(HttpServletResponse response) throws IOException {
    // png creation using jfreechart.
    /*response.setContentType("text/html");
    PrintWriter outPrintWriter = response.getWriter();
    outPrintWriter.print("<b>Error</b>: no valid mode was specified! ("+this.mode+")");
    outPrintWriter.flush();//  w w w . jav  a2s  .  c  o  m
    outPrintWriter.close();
    */
    Model3dStylesList myStylesIndex = Model3dStylesList.getModel3dStylesList();

    // fill in the SpecialCases vector with valid Model3dStyleSpecialCase objects
    Vector<Model3dStyleSpecialCase> givSpecialCasesVec = retrieveSpecialCasesVector();

    // fill in the SpecialCases vector with valid Model3dStyleSpecialCase objects
    Vector<Model3dStyleNumericCase> givNumericCasesVec = retrieveNumericCasesVector();
    Model3dStylesEntry tmpDummyEntry = new Model3dStylesEntry(null, this.givenGenCapability,
            this.givenDefaultColor, this.givenDefaultIconfile, this.givenDefaultPrefabfile, givSpecialCasesVec,
            givNumericCasesVec);
    response.setContentType("image/png");
    OutputStream out = response.getOutputStream();
    try {

        JFreeChart chart = createDatasetAndChart(tmpDummyEntry);

        int chartHeight = 40;
        if (chart.getCategoryPlot().getDataset().getColumnKeys().size() > 1) {
            chartHeight = chart.getCategoryPlot().getDataset().getColumnKeys().size() * 22;
        }
        ChartUtilities.writeChartAsPNG(out, chart, 300, chartHeight);
    } catch (Exception e) {
        System.err.println(e.toString());
        response.setContentType("text/html");
        PrintWriter outPrintWriter = response.getWriter();
        outPrintWriter.print("<b>Error</b>:" + e.toString());
        outPrintWriter.flush();
        outPrintWriter.close();
    } finally {
        out.close();
    }
    return;
}