1 7 8 package org.jfree.experimental.chart.demo; 9 10 import java.awt.Color ; 11 12 import javax.swing.JPanel ; 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 34 public class XYBlockChartDemo2 extends ApplicationFrame { 35 36 41 public XYBlockChartDemo2(String title) { 42 super(title); 43 JPanel chartPanel = createDemoPanel(); 44 chartPanel.setPreferredSize(new java.awt.Dimension (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 (1.0), Color.red); 60 paintScale.add(new Double (2.0), Color.green); 61 paintScale.add(new Double (3.0), Color.blue); 62 paintScale.add(new Double (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 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 107 public static JPanel createDemoPanel() { 108 return new ChartPanel(createChart(createDataset())); 109 } 110 111 116 public static void main(String [] 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 |