KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > experimental > chart > demo > XYBlockChartDemo2


1 /* ----------------------
2  * XYBlockChartDemo2.java
3  * ----------------------
4  * (C) Copyright 2006, by Object Refinery Limited.
5  *
6  */

7
8 package org.jfree.experimental.chart.demo;
9
10 import java.awt.Color JavaDoc;
11
12 import javax.swing.JPanel JavaDoc;
13
14 import org.jfree.chart.ChartPanel;
15 import org.jfree.chart.JFreeChart;
16 import org.jfree.chart.axis.DateAxis;
17 import org.jfree.chart.axis.NumberAxis;
18 import org.jfree.chart.plot.PlotOrientation;
19 import org.jfree.chart.plot.XYPlot;
20 import org.jfree.data.time.Day;
21 import org.jfree.data.time.RegularTimePeriod;
22 import org.jfree.data.xy.DefaultXYZDataset;
23 import org.jfree.data.xy.XYZDataset;
24 import org.jfree.experimental.chart.renderer.LookupPaintScale;
25 import org.jfree.experimental.chart.renderer.xy.XYBlockRenderer;
26 import org.jfree.ui.ApplicationFrame;
27 import org.jfree.ui.RectangleAnchor;
28 import org.jfree.ui.RefineryUtilities;
29
30 /**
31  * A simple demonstration application showing the experimental XYBlockRenderer
32  * in action. TODO: The chart needs a legend to explain the colors displayed.
33  */

34 public class XYBlockChartDemo2 extends ApplicationFrame {
35
36     /**
37      * Constructs the demo application.
38      *
39      * @param title the frame title.
40      */

41     public XYBlockChartDemo2(String JavaDoc title) {
42         super(title);
43         JPanel JavaDoc chartPanel = createDemoPanel();
44         chartPanel.setPreferredSize(new java.awt.Dimension JavaDoc(500, 270));
45         setContentPane(chartPanel);
46     }
47     
48     private static JFreeChart createChart(XYZDataset dataset) {
49         DateAxis xAxis = new DateAxis("Date");
50         xAxis.setLowerMargin(0.0);
51         xAxis.setUpperMargin(0.0);
52         NumberAxis yAxis = new NumberAxis("Hour");
53         yAxis.setUpperMargin(0.0);
54         yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
55         XYBlockRenderer renderer = new XYBlockRenderer();
56         renderer.setBlockWidth(1000.0 * 60.0 * 60.0 * 24.0);
57         renderer.setBlockAnchor(RectangleAnchor.BOTTOM_LEFT);
58         LookupPaintScale paintScale = new LookupPaintScale();
59         paintScale.add(new Double JavaDoc(1.0), Color.red);
60         paintScale.add(new Double JavaDoc(2.0), Color.green);
61         paintScale.add(new Double JavaDoc(3.0), Color.blue);
62         paintScale.add(new Double JavaDoc(4.0), Color.yellow);
63         renderer.setPaintScale(paintScale);
64         XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
65         plot.setOrientation(PlotOrientation.HORIZONTAL);
66         plot.setBackgroundPaint(Color.lightGray);
67         plot.setRangeGridlinePaint(Color.white);
68         JFreeChart chart = new JFreeChart("XYBlockChartDemo2", plot);
69         chart.removeLegend();
70         chart.setBackgroundPaint(Color.white);
71         return chart;
72     }
73     
74     /**
75      * Creates a sample dataset.
76      *
77      * @return A sample dataset.
78      */

79     private static XYZDataset createDataset() {
80         double[] xvalues = new double[2400];
81         double[] yvalues = new double[2400];
82         double[] zvalues = new double[2400];
83         RegularTimePeriod t = new Day();
84         for (int days = 0; days < 100; days++) {
85             double value = 1.0;
86             for (int hour = 0; hour < 24; hour++) {
87                 if (Math.random() < 0.1) {
88                     value = Math.random() * 4.0;
89                 }
90                 xvalues[days * 24 + hour] = t.getFirstMillisecond();
91                 yvalues[days * 24 + hour] = hour;
92                 zvalues[days * 24 + hour] = value;
93             }
94             t = t.next();
95         }
96         DefaultXYZDataset dataset = new DefaultXYZDataset();
97         dataset.addSeries("Series 1",
98                 new double[][] { xvalues, yvalues, zvalues });
99         return dataset;
100     }
101     
102     /**
103      * Creates a panel for the demo.
104      *
105      * @return A panel.
106      */

107     public static JPanel JavaDoc createDemoPanel() {
108         return new ChartPanel(createChart(createDataset()));
109     }
110     
111     /**
112      * Starting point for the demonstration application.
113      *
114      * @param args ignored.
115      */

116     public static void main(String JavaDoc[] args) {
117         XYBlockChartDemo2 demo = new XYBlockChartDemo2("Block Chart Demo 2");
118         demo.pack();
119         RefineryUtilities.centerFrameOnScreen(demo);
120         demo.setVisible(true);
121     }
122
123 }
124
Popular Tags