How To Scatter Plot - hageldave/JPlotter GitHub Wiki

How To Create a Scatter Plot

Here is a short example on how to create and display a scatter plot.

images/howto_scatterplot.png

// generate or get data
double[][] dataA = randomData(50);
double[][] dataB = randomData(100);
// create Points objects that display as filled circles and crosses
Points pointsA = new Points(DefaultGlyph.CIRCLE_F);
Points pointsB = new Points(DefaultGlyph.CROSS);
// add the individual coordinates as points
for(double[] entry: dataA){
   double x=entry[0], y=entry[1], heat=entry[2];
   PointDetails point = pointsA.addPoint(x,y);
   // set point's color
   int argb = DefaultColorMap.D_COOL_WARM.interpolate(heat);
   point.setColor(argb);
}
for(double[] entry: dataB){
   pointsB.addPoint(entry[0],entry[1]).setColor(Color.GRAY);
}
// use a coordinate system for display
CoordSysRenderer coordsys = new CoordSysRenderer();
coordsys.setCoordinateView(-1,-1,1,1);
// set the content renderer of the coordinate system 
// we want to render Points objects
PointsRenderer content = new PointsRenderer();
content.addItemToRender(pointsB).addItemToRender(pointsA);
coordsys.setContent(content);

// display within a JFrame
JFrame frame = new JFrame();
boolean useOpenGL = true;
JPlotterCanvas canvas = useOpenGL ? new BlankCanvas() : new BlankCanvasFallback();
canvas.setRenderer(coordsys);
canvas.asComponent().setPreferredSize(new Dimension(400, 400));
canvas.asComponent().setBackground(Color.WHITE);
frame.getContentPane().add(canvas.asComponent());
frame.setTitle("scatterplot");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.addCleanupOnWindowClosingListener(frame);
// make visible on AWT event dispatch thread
SwingUtilities.invokeLater(()->{
   frame.pack();
   frame.setVisible(true);
});