Search in sources :

Example 6 with ScalesResult

use of de.lmu.ifi.dbs.elki.result.ScalesResult in project elki by elki-project.

the class HistogramProjector method arrange.

@Override
public Collection<PlotItem> arrange(VisualizerContext context) {
    List<PlotItem> layout = new ArrayList<>(1 + dmax);
    List<VisualizationTask> tasks = context.getVisTasks(this);
    if (!tasks.isEmpty()) {
        final double xoff = (dmax > 1) ? .1 : 0.;
        final double hheight = .5;
        final double lheight = .1;
        PlotItem master = new PlotItem(dmax + xoff, hheight + lheight, null);
        ScalesResult scales = ScalesResult.getScalesResult(rel);
        for (int d1 = 0; d1 < dmax; d1++) {
            Projection1D proj = new Simple1D(this, scales.getScales(), d1);
            final PlotItem it = new PlotItem(d1 + xoff, lheight, 1., hheight, proj);
            it.tasks = tasks;
            master.subitems.add(it);
        }
        layout.add(master);
        // Add labels
        for (int d1 = 0; d1 < dmax; d1++) {
            PlotItem it = new PlotItem(d1 + xoff, 0, 1., lheight, null);
            LabelVisualization lbl = new LabelVisualization(RelationUtil.getColumnLabel(rel, d1));
            it.tasks.add(// 
            new VisualizationTask(lbl, "", null, null).requestSize(1, lheight).with(RenderFlag.NO_DETAIL));
            master.subitems.add(it);
        }
    }
    return layout;
}
Also used : VisualizationTask(de.lmu.ifi.dbs.elki.visualization.VisualizationTask) ScalesResult(de.lmu.ifi.dbs.elki.result.ScalesResult) Projection1D(de.lmu.ifi.dbs.elki.visualization.projections.Projection1D) ArrayList(java.util.ArrayList) Simple1D(de.lmu.ifi.dbs.elki.visualization.projections.Simple1D) PlotItem(de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem) LabelVisualization(de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualization)

Example 7 with ScalesResult

use of de.lmu.ifi.dbs.elki.result.ScalesResult in project elki by elki-project.

the class ParallelPlotProjector method arrange.

@Override
public Collection<PlotItem> arrange(VisualizerContext context) {
    List<PlotItem> col = new ArrayList<>(1);
    List<VisualizationTask> tasks = context.getVisTasks(this);
    if (!tasks.isEmpty()) {
        ScalesResult scales = ScalesResult.getScalesResult(rel);
        ProjectionParallel proj = new SimpleParallel(this, scales.getScales());
        final double width = Math.max(.5, Math.ceil(MathUtil.log2(scales.getScales().length - 1)));
        final PlotItem it = new PlotItem(width, 1., proj);
        it.tasks = tasks;
        col.add(it);
    }
    return col;
}
Also used : VisualizationTask(de.lmu.ifi.dbs.elki.visualization.VisualizationTask) ScalesResult(de.lmu.ifi.dbs.elki.result.ScalesResult) SimpleParallel(de.lmu.ifi.dbs.elki.visualization.projections.SimpleParallel) ArrayList(java.util.ArrayList) PlotItem(de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem) ProjectionParallel(de.lmu.ifi.dbs.elki.visualization.projections.ProjectionParallel)

Example 8 with ScalesResult

use of de.lmu.ifi.dbs.elki.result.ScalesResult in project elki by elki-project.

the class ScatterPlotProjector method arrange.

@Override
public Collection<PlotItem> arrange(VisualizerContext context) {
    List<PlotItem> layout = new ArrayList<>(1);
    List<VisualizationTask> tasks = context.getVisTasks(this);
    if (!tasks.isEmpty()) {
        ScalesResult scales = ScalesResult.getScalesResult(rel);
        final PlotItem master;
        if (dmax == 2) {
            // In 2d, make the plot twice as big.
            master = new PlotItem(2 + .1, 2 + .1, null);
            {
                Projection2D proj = new Simple2D(this, scales.getScales(), 0, 1);
                PlotItem it = new PlotItem(.1, 0, 2., 2., proj);
                it.tasks = tasks;
                master.subitems.add(it);
            }
            // Label at bottom
            {
                PlotItem it = new PlotItem(.1, 2., 2., .1, null);
                it.tasks.add(// 
                new VisualizationTask(new LabelVisualization(RelationUtil.getColumnLabel(rel, 0)), "", null, null).requestSize(2., .1).with(RenderFlag.NO_DETAIL));
                master.subitems.add(it);
            }
            // Label on left
            {
                PlotItem it = new PlotItem(0, 0, .1, 2, null);
                it.tasks.add(// 
                new VisualizationTask(new LabelVisualization(RelationUtil.getColumnLabel(rel, 1), true), "", null, null).requestSize(.1, 2.).with(RenderFlag.NO_DETAIL));
                master.subitems.add(it);
            }
        } else {
            final double sizeh = Math.ceil((dmax - 1) / 2.0);
            master = new PlotItem(sizeh * 2. + .1, dmax - 1 + .1, null);
            for (int d1 = 0; d1 < dmax - 1; d1++) {
                for (int d2 = d1 + 1; d2 < dmax; d2++) {
                    Projection2D proj = new Simple2D(this, scales.getScales(), d1, d2);
                    PlotItem it = new PlotItem(d1 + .1, d2 - 1, 1., 1., proj);
                    it.tasks = tasks;
                    master.subitems.add(it);
                }
            }
            if (dmax >= 3) {
                AffineTransformation p = AffineProjection.axisProjection(RelationUtil.dimensionality(rel), 1, 2);
                p.addRotation(0, 2, MathUtil.deg2rad(-10.));
                p.addRotation(1, 2, MathUtil.deg2rad(15.));
                // Wanna try 4d? go ahead:
                // p.addRotation(0, 3, Math.PI / 180 * -20.);
                // p.addRotation(1, 3, Math.PI / 180 * 30.);
                Projection2D proj = new AffineProjection(this, scales.getScales(), p);
                PlotItem it = new PlotItem(sizeh + .1, 0, sizeh, sizeh, proj);
                it.tasks = tasks;
                master.subitems.add(it);
            }
            // Labels at bottom
            for (int d1 = 0; d1 < dmax - 1; d1++) {
                PlotItem it = new PlotItem(d1 + .1, dmax - 1, 1., .1, null);
                it.tasks.add(// 
                new VisualizationTask(new LabelVisualization(RelationUtil.getColumnLabel(rel, d1)), "", null, null).requestSize(1, .1).with(RenderFlag.NO_DETAIL));
                master.subitems.add(it);
            }
            // Labels on left
            for (int d2 = 1; d2 < dmax; d2++) {
                PlotItem it = new PlotItem(0, d2 - 1, .1, 1, null);
                it.tasks.add(// 
                new VisualizationTask(new LabelVisualization(RelationUtil.getColumnLabel(rel, d2), true), "", null, null).requestSize(.1, 1.).with(RenderFlag.NO_DETAIL));
                master.subitems.add(it);
            }
        }
        layout.add(master);
    }
    return layout;
}
Also used : ArrayList(java.util.ArrayList) Simple2D(de.lmu.ifi.dbs.elki.visualization.projections.Simple2D) AffineProjection(de.lmu.ifi.dbs.elki.visualization.projections.AffineProjection) VisualizationTask(de.lmu.ifi.dbs.elki.visualization.VisualizationTask) ScalesResult(de.lmu.ifi.dbs.elki.result.ScalesResult) Projection2D(de.lmu.ifi.dbs.elki.visualization.projections.Projection2D) AffineTransformation(de.lmu.ifi.dbs.elki.math.linearalgebra.AffineTransformation) PlotItem(de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem) LabelVisualization(de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualization)

Aggregations

ScalesResult (de.lmu.ifi.dbs.elki.result.ScalesResult)8 VisualizationTask (de.lmu.ifi.dbs.elki.visualization.VisualizationTask)3 PlotItem (de.lmu.ifi.dbs.elki.visualization.gui.overview.PlotItem)3 ArrayList (java.util.ArrayList)3 LinearScale (de.lmu.ifi.dbs.elki.math.scales.LinearScale)2 ProjectionParallel (de.lmu.ifi.dbs.elki.visualization.projections.ProjectionParallel)2 SimpleParallel (de.lmu.ifi.dbs.elki.visualization.projections.SimpleParallel)2 LabelVisualization (de.lmu.ifi.dbs.elki.visualization.visualizers.visunproj.LabelVisualization)2 NumberVector (de.lmu.ifi.dbs.elki.data.NumberVector)1 DBIDIter (de.lmu.ifi.dbs.elki.database.ids.DBIDIter)1 Relation (de.lmu.ifi.dbs.elki.database.relation.Relation)1 DoubleMinMax (de.lmu.ifi.dbs.elki.math.DoubleMinMax)1 AffineTransformation (de.lmu.ifi.dbs.elki.math.linearalgebra.AffineTransformation)1 ListSizeConstraint (de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.ListSizeConstraint)1 AffineProjection (de.lmu.ifi.dbs.elki.visualization.projections.AffineProjection)1 Projection1D (de.lmu.ifi.dbs.elki.visualization.projections.Projection1D)1 Projection2D (de.lmu.ifi.dbs.elki.visualization.projections.Projection2D)1 Simple1D (de.lmu.ifi.dbs.elki.visualization.projections.Simple1D)1 Simple2D (de.lmu.ifi.dbs.elki.visualization.projections.Simple2D)1 ClusterStylingPolicy (de.lmu.ifi.dbs.elki.visualization.style.ClusterStylingPolicy)1