1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| /**
* A simple demonstration application showing a chart created using
* the {@link XYBlockRenderer}.
* <br><br>
* TODO: The chart needs a display showing the value scale.
*/
public class XYBlockChartDemo1 extends ApplicationFrame {
/**
* Constructs the demo application.
*
* @param title the frame title.
*/
public XYBlockChartDemo1(String title) {
super(title);
JPanel chartPanel = createDemoPanel();
chartPanel.setPreferredSize(new java.awt.Dimension(500, 470));
setContentPane(chartPanel);
}
/**
* Creates a sample chart.
*
* @param dataset the dataset.
*
* @return A sample chart.
*/
public static JFreeChart createChart(XYZDataset dataset) {
NumberAxis xAxis = new NumberAxis("X");
xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
xAxis.setLowerMargin(0.0);
xAxis.setUpperMargin(0.0);
NumberAxis yAxis = new NumberAxis("Y");
yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
yAxis.setLowerMargin(0.0);
yAxis.setUpperMargin(0.0);
XYBlockRenderer renderer = new XYBlockRenderer();
PaintScale scale = new GrayPaintScale(-2.0, 1.0);
renderer.setPaintScale(scale);
XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinesVisible(false);
plot.setRangeGridlinePaint(Color.white);
JFreeChart chart = new JFreeChart("XYBlockChartDemo1", plot);
chart.removeLegend();
chart.setBackgroundPaint(Color.white);
return chart;
}
/**
* Creates a sample dataset.
*/
static double dt[][] = {
{0,0.1,0.2,0.3,0.4,0.5},
{0,0.1,0.2,0.3,0.4,0.5},
{0.9,0.8,0.7,0.6,0.5,0},
{0.9,0.8,0.7,0.6,0.5,0},
{0,0.1,0.2,0.3,0.4,0.5},
{0,0.1,0.2,0.3,0.4,0.5},
{0.9,0.8,0.7,0.6,0.5,0},
{0.9,0.8,0.7,0.6,0.5,0}
};
private static XYZDataset createDataset() {
return new XYZDataset()
{
public int getSeriesCount() {
return 1;
}
public int getItemCount(int series) {
return 48;
}
public Number getX(int series, int item) {
return new Double(getXValue(series, item));
}
public double getXValue(int series, int item) {
return (item / 6) ;
}
public Number getY(int series, int item) {
return new Double(getYValue(series, item));
}
public double getYValue(int series, int item) {
return (item - (item / 6) * 6);
}
public Number getZ(int series, int item) {
return new Double(getZValue(series, item));
}
public double getZValue(int series, int item) {
double x = getXValue(series, item);
double y = getYValue(series, item);
return dt[(int)x][(int)y];
}
public void addChangeListener(DatasetChangeListener listener) {
// ignore - this dataset never changes
}
public void removeChangeListener(DatasetChangeListener listener) {
// ignore
}
public DatasetGroup getGroup() {
return null;
}
public void setGroup(DatasetGroup group) {
// ignore
}
public Comparable getSeriesKey(int series) {
return "sin(sqrt(x + y))";
}
public int indexOf(Comparable seriesKey) {
return 0;
}
public DomainOrder getDomainOrder() {
return DomainOrder.ASCENDING;
}
@Override
public int getXSize(int series) {
return 100;
}
@Override
public int getYSize(int series) {
// TODO Auto-generated method stub
return 100;
}
};
}
/**
* Creates a panel for the demo.
*
* @return A panel.
*/
public static JPanel createDemoPanel() {
return new ChartPanel(createChart(createDataset()));
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
XYBlockChartDemo1 demo = new XYBlockChartDemo1("Block Chart Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
} |
Partager