Class SwingParallelCoordinates<R,C>

java.lang.Object
com.macrofocus.high_d.parallelcoordinates.AbstractParallelCoordinates<JComponent,Color,R,C>
com.macrofocus.high_d.parallelcoordinates.swing.SwingParallelCoordinates<R,C>
All Implemented Interfaces:
com.macrofocus.crossplatform.CPComponent<JComponent>, ParallelCoordinates<JComponent,Color,R,C>

public class SwingParallelCoordinates<R,C> extends AbstractParallelCoordinates<JComponent,Color,R,C>
A facade to the ParallelCoordinates model-view-controller (MVC) architecture. In brief, the controller collects user input, the model manipulates application data, and the view presents results to the user. This class wraps a ParallelCoordinatesModel, ParallelCoordinatesView, and ParallelCoordinatesController together. It allows easy loading of the data and customization of the most common settings.

Here is a simplistic example of how to get started with this class within minutes:


 import com.macrofocus.data.table.Row;
 import com.macrofocus.helper.TableHelper;
 import com.macrofocus.high_d.pcs.ParallelCoordinates;
 import com.macrofocus.high_d.pcs.ParallelCoordinatesModel;
 import com.macrofocus.high_d.pcs.axis.AxisModel;
 import com.macrofocus.high_d.pcs.colortheme.DarkColorTheme;
 import com.macrofocus.high_d.pcs.geometry.Geometry;

 import javax.swing.*;
 import javax.swing.table.TableModel;
 import java.awt.*;

 public class Hello {
    public static void main(String[] args) {
        final TableModel tableModel = TableHelper.createRandomDataFrame(4, 10000, 10);
        ParallelCoordinates parallelCoordinates = new ParallelCoordinates(tableModel);

        ParallelCoordinatesModel model = parallelCoordinates.getModel();

        // Tune the appearance
        model.getSettings().setGeometry(Geometry.Steps);
        parallelCoordinates.getView().setColorTheme(new DarkColorTheme());

        // Normalize all the scales between 0 and 1
        for(AxisModel axisModel: model.getAxisModels()) {
            axisModel.setMaximum(1);
            axisModel.setMinimum(0);
            axisModel.getInterval().setValue(0, 1);
        }

        // Filter out values that are not between 0.5 and 0.7
        model.getAxisModel(2).getInterval().setValue(0.5, 0.2);

        // Adjust the initial state
        model.getProbing().setSelected(model.getObject(16));
        model.getSelection().setSelected(model.getObject(10));
        model.getColoring().setColor(model.getObject(498), Color.green);

        final JFrame frame = new JFrame("Hello from the High-D World!");
        frame.setSize(800, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(parallelCoordinates);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
 }
 
The code above will produce the following output: