예제 #1
0
  /**
   * temporal helper function
   *
   * @param dataset
   * @return
   */
  private JFreeChart createChart(TimeSeriesCollection dataset) {

    NumberAxis axis = new NumberAxis(null);
    axis.setAutoRangeIncludesZero(false);

    // parent=new CombinedRangeXYPlot(axis);

    // chart = null;

    // XYPlot plot2=new XYPlot(dataset2, new DateAxis(null), null, new StandardXYItemRenderer());
    // XYPlot subplot2=new XYPldt(dataset2, new DateAxis("Date 2"), null, )

    // parent.add(subplot1);
    // parent.add(subplot2);

    // chart=new JFreeChart(null, null, parent, false);

    chart = ChartFactory.createTimeSeriesChart(null, "", "", dataset, false, false, false);

    XYPlot plot1 = chart.getXYPlot();

    plot1.setDataset(dataset);
    plot1.setRenderer(new StandardXYItemRenderer());

    plot1.setSecondaryDataset(0, hld);
    CandlestickRenderer c1 = new CandlestickRenderer();

    // c1.setAutoWidthFactor(1.0);
    // c1.setAutoWidthGap(0.1);
    c1.setBasePaint(new Color(255, 255, 255));
    c1.setBaseOutlinePaint(new Color(255, 255, 255));

    c1.setPaint(new Color(255, 255, 255));

    c1.setUpPaint(new Color(255, 0, 0, 80));
    c1.setDownPaint(new Color(0, 255, 0, 80));

    plot1.setSecondaryRenderer(0, c1);

    // plot1.setSecondaryDataset(0, dataset2);

    XYDotRenderer xd1 = new XYDotRenderer();
    // plot1.setSecondaryRenderer(0, new AreaXYRenderer(AreaXYRenderer.AREA_AND_SHAPES));
    // plot1.setSecondaryRenderer(0, xd1);

    // chart=new JFreeChart("", null, plot1, false);

    chart.setBackgroundPaint(new Color(0, 0, 0));

    return chart;
  }
예제 #2
0
    public MyDemoPanel() {
      super(new BorderLayout());
      lastValue = new double[3];
      CombinedDomainXYPlot combineddomainxyplot = new CombinedDomainXYPlot(new DateAxis("Time"));
      datasets = new TimeSeriesCollection[3];
      for (int i = 0; i < 3; i++) {
        lastValue[i] = 100D;
        TimeSeries timeseries = new TimeSeries("Random " + i);
        datasets[i] = new TimeSeriesCollection(timeseries);
        NumberAxis numberaxis = new NumberAxis("Y" + i);
        numberaxis.setAutoRangeIncludesZero(false);
        XYPlot xyplot = new XYPlot(datasets[i], null, numberaxis, new StandardXYItemRenderer());
        xyplot.setBackgroundPaint(Color.lightGray);
        xyplot.setDomainGridlinePaint(Color.white);
        xyplot.setRangeGridlinePaint(Color.white);
        combineddomainxyplot.add(xyplot);
      }

      JFreeChart jfreechart = new JFreeChart("Dynamic Data Demo 3", combineddomainxyplot);
      addChart(jfreechart);
      LegendTitle legendtitle = (LegendTitle) jfreechart.getSubtitle(0);
      legendtitle.setPosition(RectangleEdge.RIGHT);
      legendtitle.setMargin(new RectangleInsets(UnitType.ABSOLUTE, 0.0D, 4D, 0.0D, 4D));
      jfreechart.setBorderPaint(Color.black);
      jfreechart.setBorderVisible(true);
      ValueAxis valueaxis = combineddomainxyplot.getDomainAxis();
      valueaxis.setAutoRange(true);
      valueaxis.setFixedAutoRange(20000D);
      ChartUtilities.applyCurrentTheme(jfreechart);
      ChartPanel chartpanel = new ChartPanel(jfreechart);
      add(chartpanel);
      JPanel jpanel = new JPanel(new FlowLayout());
      for (int j = 0; j < 3; j++) {
        JButton jbutton1 = new JButton("Series " + j);
        jbutton1.setActionCommand("ADD_DATA_" + j);
        jbutton1.addActionListener(this);
        jpanel.add(jbutton1);
      }

      JButton jbutton = new JButton("ALL");
      jbutton.setActionCommand("ADD_ALL");
      jbutton.addActionListener(this);
      jpanel.add(jbutton);
      add(jpanel, "South");
      chartpanel.setPreferredSize(new Dimension(500, 470));
      chartpanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    }
  public String generateXYAreaChart(
      HttpSession session, PrintWriter pw, String courseId, int studentId) {
    String filename = null;
    /* int groupId=0;
    if (groupName.equals("All")){
        groupId=0;
    }else{
         groupId = studStatisticBean.getGroupIdByName(groupName);
    }*/

    try {
      //  Retrieve list of WebHits for each section and populate a TableXYDataset
      StudentsConceptChartDataSet cDataSet =
          new StudentsConceptChartDataSet(studStatisticBean, courseId, studentId);
      // cDataSet.setStudentStatisticBeanIdRef(studStatisticBean);
      ArrayList sections = cDataSet.getSections();
      Iterator sectionIter = sections.iterator();
      DefaultTableXYDataset dataset = new DefaultTableXYDataset();
      while (sectionIter.hasNext()) {
        String section = (String) sectionIter.next();
        ArrayList list = cDataSet.getDataByHitConcept(section);
        XYSeries dataSeries = new XYSeries(section, true, false);
        Iterator webHitIter = list.iterator();
        while (webHitIter.hasNext()) {
          StudentsConceptHit cHit = (StudentsConceptHit) webHitIter.next();
          dataSeries.add(cHit.getOrdNumb(), cHit.getHitDegree());
        }
        dataset.addSeries(dataSeries);
      }

      //  Throw a custom NoDataException if there is no data
      if (dataset.getItemCount() == 0) {
        System.out.println("No data has been found");
        throw new NoDataException();
      }

      //  Create tooltip and URL generators
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);
      StandardXYToolTipGenerator ttg =
          new StandardXYToolTipGenerator(
              StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, sdf, NumberFormat.getInstance());
      TimeSeriesURLGenerator urlg =
          new TimeSeriesURLGenerator(sdf, "bar_chart.jsp", "series", "hitDate");

      //  Create the X-Axis
      DateAxis xAxis = new DateAxis(null);
      xAxis.setLowerMargin(0.0);
      xAxis.setUpperMargin(0.0);

      //  Create the X-Axis
      NumberAxis yAxis = new NumberAxis(null);
      yAxis.setAutoRangeIncludesZero(true);

      //  Create the renderer
      StackedXYAreaRenderer renderer =
          new StackedXYAreaRenderer(XYAreaRenderer.AREA_AND_SHAPES, ttg, urlg);
      renderer.setSeriesPaint(0, new Color(255, 255, 180));
      renderer.setSeriesPaint(1, new Color(206, 230, 255));
      renderer.setSeriesPaint(2, new Color(255, 230, 230));
      renderer.setSeriesPaint(3, new Color(206, 255, 206));
      renderer.setShapePaint(Color.gray);
      renderer.setShapeStroke(new BasicStroke(0.5f));
      renderer.setShape(new Ellipse2D.Double(-3, -3, 6, 6));
      renderer.setOutline(true);

      //  Create the plot
      XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
      plot.setForegroundAlpha(0.65f);

      //  Reconfigure Y-Axis so the auto-range knows that the data is stacked
      yAxis.configure();

      //  Create the chart
      JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);
      chart.setBackgroundPaint(java.awt.Color.white);

      //  Write the chart image to the temporary directory
      ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
      filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, info, session);

      //  Write the image map to the PrintWriter
      ChartUtilities.writeImageMap(pw, filename, info);
      pw.flush();

    } catch (NoDataException e) {
      System.out.println(e.toString());
      filename = "public_nodata_500x300.png";
    } catch (Exception e) {
      System.out.println("Exception - " + e.toString());
      e.printStackTrace(System.out);
      filename = "public_error_500x300.png";
    }
    return filename;
  }