Beispiel #1
0
  private JFreeChart buildChart(TimeSeriesCollection dataset, String title, boolean endPoints) {
    // Create the chart
    JFreeChart chart =
        ChartFactory.createTimeSeriesChart(title, "Date", "Price", dataset, true, true, false);

    // Display each series in the chart with its point shape in the legend
    LegendTitle sl = chart.getLegend();
    // sl.setDisplaySeriesShapes(true);

    // Setup the appearance of the chart
    chart.setBackgroundPaint(Color.white);
    XYPlot plot = chart.getXYPlot();
    plot.setBackgroundPaint(Color.lightGray);
    plot.setDomainGridlinePaint(Color.white);
    plot.setRangeGridlinePaint(Color.white);
    plot.setAxisOffset(new RectangleInsets(UnitType.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
    plot.setDomainCrosshairVisible(true);
    plot.setRangeCrosshairVisible(true);

    // Display data points or just the lines?
    if (endPoints) {
      XYItemRenderer renderer = plot.getRenderer();
      if (renderer instanceof StandardXYItemRenderer) {
        StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
        // rr.setPlotShapes(true);
        rr.setShapesFilled(true);
        rr.setItemLabelsVisible(true);
      }
    }

    // Tell the chart how we would like dates to read
    DateAxis axis = (DateAxis) plot.getDomainAxis();
    axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
    return chart;
  }
Beispiel #2
0
  public Chart(String title, String timeAxis, String valueAxis, TimeSeries data) {
    try {
      // Build the datasets
      dataset.addSeries(data);

      // Create the chart
      JFreeChart chart =
          ChartFactory.createTimeSeriesChart(
              title, timeAxis, valueAxis, dataset, true, true, false);

      // Setup the appearance of the chart
      chart.setBackgroundPaint(Color.white);
      XYPlot plot = chart.getXYPlot();
      plot.setBackgroundPaint(Color.lightGray);
      plot.setDomainGridlinePaint(Color.white);
      plot.setRangeGridlinePaint(Color.white);
      plot.setAxisOffset(new RectangleInsets(UnitType.ABSOLUTE, 5.0, 5.0, 5.0, 5.0));
      plot.setDomainCrosshairVisible(true);
      plot.setRangeCrosshairVisible(true);

      // Tell the chart how we would like dates to read
      DateAxis axis = (DateAxis) plot.getDomainAxis();
      axis.setDateFormatOverride(new SimpleDateFormat("EEE HH"));

      this.add(new ChartPanel(chart));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 private static JFreeChart createChart(TableXYDataset tablexydataset) {
   DateAxis dateaxis = new DateAxis("Date");
   dateaxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
   dateaxis.setLowerMargin(0.01D);
   dateaxis.setUpperMargin(0.01D);
   NumberAxis numberaxis = new NumberAxis("Count");
   numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
   numberaxis.setUpperMargin(0.10000000000000001D);
   StackedXYBarRenderer stackedxybarrenderer = new StackedXYBarRenderer(0.14999999999999999D);
   stackedxybarrenderer.setDrawBarOutline(false);
   stackedxybarrenderer.setBaseItemLabelsVisible(true);
   stackedxybarrenderer.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
   stackedxybarrenderer.setBasePositiveItemLabelPosition(
       new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER));
   stackedxybarrenderer.setBaseToolTipGenerator(
       new StandardXYToolTipGenerator(
           "{0} : {1} = {2}", new SimpleDateFormat("yyyy"), new DecimalFormat("0")));
   XYPlot xyplot = new XYPlot(tablexydataset, dateaxis, numberaxis, stackedxybarrenderer);
   JFreeChart jfreechart = new JFreeChart("Holes-In-One / Double Eagles", xyplot);
   jfreechart.removeLegend();
   jfreechart.addSubtitle(new TextTitle("PGA Tour, 1983 to 2003"));
   TextTitle texttitle =
       new TextTitle(
           "http://www.golfdigest.com/majors/masters/index.ssf?/majors/masters/gw20040402albatross.html",
           new Font("Dialog", 0, 8));
   jfreechart.addSubtitle(texttitle);
   jfreechart.setTextAntiAlias(RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
   LegendTitle legendtitle = new LegendTitle(xyplot);
   legendtitle.setBackgroundPaint(Color.white);
   legendtitle.setFrame(new BlockBorder());
   legendtitle.setPosition(RectangleEdge.BOTTOM);
   jfreechart.addSubtitle(legendtitle);
   return jfreechart;
 }
  private void createDateClienteModel() {
    dateClienteModel = new LineChartModel();
    LineChartSeries mueblesI = new LineChartSeries();
    LineChartSeries mueblesE = new LineChartSeries();

    mueblesI.setLabel("Muebles Interior");
    mueblesE.setLabel("Muebles Exterior");

    for (InformeDiario item : reporte.getInformeDiarios()) {
      mueblesI.set(sdf.format(item.getFecha().getTime()), item.getMueblesInterior());
      mueblesE.set(sdf.format(item.getFecha().getTime()), item.getMueblesExterior());
    }

    dateClienteModel.addSeries(mueblesI);
    dateClienteModel.addSeries(mueblesE);

    dateClienteModel.setTitle("Reporte Diario");
    dateClienteModel.setZoom(true);
    dateClienteModel.setAnimate(true);
    dateClienteModel.getAxis(AxisType.Y).setLabel("Muebles");
    dateClienteModel.getAxis(AxisType.Y).setMin(0);
    DateAxis axis = new DateAxis("Fechas");
    dateClienteModel.setLegendPosition("e");
    dateClienteModel.setShowPointLabels(true);
    axis.setTickAngle(-50);

    dateClienteModel.getAxes().put(AxisType.X, axis);
  }
 private static JFreeChart createChart() {
   DateAxis dateaxis = new DateAxis("Date");
   dateaxis.setTickMarkPosition(DateTickMarkPosition.MIDDLE);
   NumberAxis numberaxis = new NumberAxis("Value");
   IntervalXYDataset intervalxydataset = createDataset1();
   XYBarRenderer xybarrenderer = new XYBarRenderer(0.20000000000000001D);
   xybarrenderer.setBaseToolTipGenerator(
       new StandardXYToolTipGenerator(
           "{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00")));
   XYPlot xyplot = new XYPlot(intervalxydataset, dateaxis, numberaxis, xybarrenderer);
   NumberAxis numberaxis1 = new NumberAxis("Value 2");
   xyplot.setRangeAxis(1, numberaxis1);
   XYDataset xydataset = createDataset2A();
   StandardXYItemRenderer standardxyitemrenderer = new StandardXYItemRenderer();
   standardxyitemrenderer.setBaseToolTipGenerator(
       new StandardXYToolTipGenerator(
           "{0}: ({1}, {2})", new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00")));
   xyplot.setDataset(1, xydataset);
   xyplot.setRenderer(1, standardxyitemrenderer);
   XYDataset xydataset1 = createDataset2B();
   xyplot.setDataset(2, xydataset1);
   xyplot.setRenderer(2, new StandardXYItemRenderer());
   xyplot.mapDatasetToRangeAxis(2, 1);
   xyplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
   xyplot.setOrientation(PlotOrientation.VERTICAL);
   JFreeChart jfreechart =
       new JFreeChart("Overlaid XYPlot Demo 2", JFreeChart.DEFAULT_TITLE_FONT, xyplot, true);
   ChartUtilities.applyCurrentTheme(jfreechart);
   return jfreechart;
 }
Beispiel #6
0
 /** Two objects that are equal are required to return the same hashCode. */
 @Test
 public void testHashCode() {
   DateAxis a1 = new DateAxis("Test");
   DateAxis a2 = new DateAxis("Test");
   assertTrue(a1.equals(a2));
   int h1 = a1.hashCode();
   int h2 = a2.hashCode();
   assertEquals(h1, h2);
 }
Beispiel #7
0
  /** Test that the setRange() method works. */
  @Test
  public void testSetRange() {

    DateAxis axis = new DateAxis("Test Axis");
    Calendar calendar = Calendar.getInstance();
    calendar.set(1999, Calendar.JANUARY, 3);
    Date d1 = calendar.getTime();
    calendar.set(1999, Calendar.JANUARY, 31);
    Date d2 = calendar.getTime();
    axis.setRange(d1, d2);

    DateRange range = (DateRange) axis.getRange();
    assertEquals(d1, range.getLowerDate());
    assertEquals(d2, range.getUpperDate());
  }
Beispiel #8
0
 /** Confirm that cloning works. */
 @Test
 public void testCloning() throws CloneNotSupportedException {
   DateAxis a1 = new DateAxis("Test");
   DateAxis a2 = (DateAxis) a1.clone();
   assertTrue(a1 != a2);
   assertTrue(a1.getClass() == a2.getClass());
   assertTrue(a1.equals(a2));
 }
Beispiel #9
0
  /**
   * A test for bug report 1472942. The DateFormat.equals() method is not checking the range
   * attribute.
   */
  @Test
  public void test1472942() {
    DateAxis a1 = new DateAxis("Test");
    DateAxis a2 = new DateAxis("Test");
    assertTrue(a1.equals(a2));

    // range
    a1.setRange(new Date(1L), new Date(2L));
    assertFalse(a1.equals(a2));
    a2.setRange(new Date(1L), new Date(2L));
    assertTrue(a1.equals(a2));
  }
Beispiel #10
0
  @Test
  public void testBug3484403() {

    final long[] dates = {
      1304892000000L,
      1304632800000L,
      1304546400000L,
      1304460000000L,
      1304373600000L,
      1304287200000L,
      1320015600000L,
      1309384800000L,
      1319752800000L,
      1319666400000L,
      1319580000000L,
      1319493600000L
    };
    Arrays.sort(dates);

    DateAxis axis = new DateAxis("Date");
    // set start and end date
    Date start = new Date(dates[0]);
    Date end = new Date(dates[dates.length - 1]);
    axis.setMinimumDate(start);
    axis.setMaximumDate(end);

    SegmentedTimeline timeline = SegmentedTimeline.newMondayThroughFridayTimeline();
    timeline.setStartTime(start.getTime());
    axis.setTimeline(timeline);

    BufferedImage image = new BufferedImage(200, 100, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = image.createGraphics();
    Rectangle2D area = new Rectangle2D.Double(0.0, 0.0, 500, 200);

    // if the bug is still present, this leads to an endless loop
    axis.refreshTicks(g2, new AxisState(), area, RectangleEdge.BOTTOM);
  }
Beispiel #11
0
  /** Test that the setMaximumDate() method works. */
  @Test
  public void testSetMaximumDate() {
    DateAxis axis = new DateAxis("Test Axis");
    Date date = new Date();
    axis.setMaximumDate(date);
    assertEquals(date, axis.getMaximumDate());

    // check that setting the max date to something on or before the
    // current min date works...
    Date d1 = new Date();
    Date d2 = new Date(d1.getTime() + 1);
    Date d0 = new Date(d1.getTime() - 1);
    axis.setMaximumDate(d2);
    axis.setMinimumDate(d1);
    axis.setMaximumDate(d1);
    assertEquals(d0, axis.getMinimumDate());
  }
Beispiel #12
0
  /** Test that the setMinimumDate() method works. */
  @Test
  public void testSetMinimumDate() {
    DateAxis axis = new DateAxis("Test Axis");
    Date d1 = new Date();
    Date d2 = new Date(d1.getTime() + 1);
    axis.setMaximumDate(d2);
    axis.setMinimumDate(d1);
    assertEquals(d1, axis.getMinimumDate());

    // check that setting the min date to something on or after the
    // current min date works...
    Date d3 = new Date(d2.getTime() + 1);
    axis.setMinimumDate(d2);
    assertEquals(d3, axis.getMaximumDate());
  }
Beispiel #13
0
  /** A test to reproduce bug 2201869. */
  @Test
  public void testBug2201869() {
    TimeZone tz = TimeZone.getTimeZone("GMT");
    GregorianCalendar c = new GregorianCalendar(tz, Locale.UK);
    DateAxis axis = new DateAxis("Date", tz, Locale.UK);
    SimpleDateFormat sdf = new SimpleDateFormat("d-MMM-yyyy", Locale.UK);
    sdf.setCalendar(c);
    axis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1, sdf));
    Day d1 = new Day(1, 3, 2008);
    d1.peg(c);
    Day d2 = new Day(30, 6, 2008);
    d2.peg(c);
    axis.setRange(d1.getStart(), d2.getEnd());
    BufferedImage image = new BufferedImage(200, 100, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2 = image.createGraphics();
    Rectangle2D area = new Rectangle2D.Double(0.0, 0.0, 200, 100);
    axis.setTickMarkPosition(DateTickMarkPosition.END);
    List ticks = axis.refreshTicks(g2, new AxisState(), area, RectangleEdge.BOTTOM);
    assertEquals(3, ticks.size());
    DateTick t1 = (DateTick) ticks.get(0);
    assertEquals("31-Mar-2008", t1.getText());
    DateTick t2 = (DateTick) ticks.get(1);
    assertEquals("30-Apr-2008", t2.getText());
    DateTick t3 = (DateTick) ticks.get(2);
    assertEquals("31-May-2008", t3.getText());

    // now repeat for a vertical axis
    ticks = axis.refreshTicks(g2, new AxisState(), area, RectangleEdge.LEFT);
    assertEquals(3, ticks.size());
    t1 = (DateTick) ticks.get(0);
    assertEquals("31-Mar-2008", t1.getText());
    t2 = (DateTick) ticks.get(1);
    assertEquals("30-Apr-2008", t2.getText());
    t3 = (DateTick) ticks.get(2);
    assertEquals("31-May-2008", t3.getText());
  }
Beispiel #14
0
 /** Test the translation of Java2D values to data values. */
 @Test
 public void testJava2DToValue() {
   DateAxis axis = new DateAxis();
   axis.setRange(50.0, 100.0);
   Rectangle2D dataArea = new Rectangle2D.Double(10.0, 50.0, 400.0, 300.0);
   double y1 = axis.java2DToValue(75.0, dataArea, RectangleEdge.LEFT);
   assertTrue(same(y1, 95.8333333, 1.0));
   double y2 = axis.java2DToValue(75.0, dataArea, RectangleEdge.RIGHT);
   assertTrue(same(y2, 95.8333333, 1.0));
   double x1 = axis.java2DToValue(75.0, dataArea, RectangleEdge.TOP);
   assertTrue(same(x1, 58.125, 1.0));
   double x2 = axis.java2DToValue(75.0, dataArea, RectangleEdge.BOTTOM);
   assertTrue(same(x2, 58.125, 1.0));
   axis.setInverted(true);
   double y3 = axis.java2DToValue(75.0, dataArea, RectangleEdge.LEFT);
   assertTrue(same(y3, 54.1666667, 1.0));
   double y4 = axis.java2DToValue(75.0, dataArea, RectangleEdge.RIGHT);
   assertTrue(same(y4, 54.1666667, 1.0));
   double x3 = axis.java2DToValue(75.0, dataArea, RectangleEdge.TOP);
   assertTrue(same(x3, 91.875, 1.0));
   double x4 = axis.java2DToValue(75.0, dataArea, RectangleEdge.BOTTOM);
   assertTrue(same(x4, 91.875, 1.0));
 }
Beispiel #15
0
  /** Confirm that the equals method can distinguish all the required fields. */
  @Test
  public void testEquals() {

    DateAxis a1 = new DateAxis("Test");
    DateAxis a2 = new DateAxis("Test");
    assertTrue(a1.equals(a2));
    assertFalse(a1.equals(null));
    assertFalse(a1.equals("Some non-DateAxis object"));

    a1 = new DateAxis("Test", TimeZone.getTimeZone("PST"), Locale.US);
    assertFalse(a1.equals(a2));
    a2 = new DateAxis("Test", TimeZone.getTimeZone("PST"), Locale.US);
    assertTrue(a1.equals(a2));

    a1 = new DateAxis("Test", TimeZone.getTimeZone("PST"), Locale.FRANCE);
    assertFalse(a1.equals(a2));
    a2 = new DateAxis("Test", TimeZone.getTimeZone("PST"), Locale.FRANCE);
    assertTrue(a1.equals(a2));

    // tickUnit
    a1.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 7));
    assertFalse(a1.equals(a2));
    a2.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 7));
    assertTrue(a1.equals(a2));

    // dateFormatOverride
    a1.setDateFormatOverride(new SimpleDateFormat("yyyy"));
    assertFalse(a1.equals(a2));
    a2.setDateFormatOverride(new SimpleDateFormat("yyyy"));
    assertTrue(a1.equals(a2));

    // tickMarkPosition
    a1.setTickMarkPosition(DateTickMarkPosition.END);
    assertFalse(a1.equals(a2));
    a2.setTickMarkPosition(DateTickMarkPosition.END);
    assertTrue(a1.equals(a2));

    // timeline
    a1.setTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());
    assertFalse(a1.equals(a2));
    a2.setTimeline(SegmentedTimeline.newMondayThroughFridayTimeline());
    assertTrue(a1.equals(a2));
  }
Beispiel #16
0
 private DateTime getDateTime() {
   return dateAxis.getValueForDisplay(dateAxis.parentToLocal(getLayoutX(), 0).getX());
 }
  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;
  }