Code: Select all
double[][] data= new double[3][];
data[0] = new double[1000];
data[1] = new double[1000];
data[2] = new double[1000];
String label[1000] = {"xxx", "yyy", ...};
data[0][] = {....};
data[1][] = {....};
data[2][] = {....};
DefaultXYZDataset dataset = new DefaultXYZDataset();
dataset.addSeries("data", data);
JFrame frame = new JFrame("gmapping");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ChartPanel chartPanel = new ChartPanel(createChart(dataset, title, yAxisString, minValue, maxValue)) {
private static final long serialVersionUID = 1L;
public Dimension getPreferredSize() {
return new Dimension(1600, 1600);
}
};
chartPanel.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseMoved(ChartMouseEvent event) {
// TODO Auto-generated method stub
}
@Override
public void chartMouseClicked(ChartMouseEvent event) {
//display the correct label...
}
});
chartPanel.setMouseZoomable(true, false);
frame.add(chartPanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static JFreeChart createChart(XYDataset dataset, String title, String valueString, double lo, double hi) {
NumberAxis xAxis = new NumberAxis("x");
NumberAxis yAxis = new NumberAxis("y");
XYPlot plot = new XYPlot(dataset, xAxis, yAxis, null);
XYBlockRenderer r = new XYBlockRenderer();
SpectrumPaintScale ps = new SpectrumPaintScale(lo, hi);
r.setPaintScale(ps);
r.setBlockHeight(10.0f);
r.setBlockWidth(10.0f);
plot.setRenderer(r);
JFreeChart chart = new JFreeChart(title,
JFreeChart.DEFAULT_TITLE_FONT, plot, false);
NumberAxis scaleAxis = new NumberAxis(valueString);
scaleAxis.setAxisLinePaint(Color.white);
scaleAxis.setTickMarkPaint(Color.white);
PaintScaleLegend legend = new PaintScaleLegend(ps, scaleAxis);
legend.setSubdivisionCount(128);
legend.setAxisLocation(AxisLocation.TOP_OR_RIGHT);
legend.setPadding(new RectangleInsets(10, 10, 10, 10));
legend.setStripWidth(20);
legend.setPosition(RectangleEdge.RIGHT);
legend.setBackgroundPaint(Color.WHITE);
chart.addSubtitle(legend);
chart.setBackgroundPaint(Color.white);
return chart;
}