Search in sources :

Example 1 with It

use of de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.It in project elki by elki-project.

the class EvaluationVisualization method makeVisualization.

@Override
public Visualization makeVisualization(VisualizerContext context, VisualizationTask task, VisualizationPlot plot, double width, double height, Projection proj) {
    // TODO: make a utility class to wrap SVGPlot + parent layer + ypos.
    // TODO: use CSSClass and StyleLibrary
    // Skip space before first header
    double ypos = -.5;
    Element parent = plot.svgElement(SVGConstants.SVG_G_TAG);
    Object o = task.getResult();
    EvaluationResult sr = null;
    if (o instanceof EvaluationResult) {
        sr = (EvaluationResult) o;
    } else if (o instanceof Class && EvaluationResult.class.isAssignableFrom((Class<?>) o)) {
        // Use cluster evaluation of current style instead.
        StylingPolicy spol = context.getStylingPolicy();
        if (spol instanceof ClusterStylingPolicy) {
            ClusterStylingPolicy cpol = (ClusterStylingPolicy) spol;
            // will be a subtype, actually!
            @SuppressWarnings("unchecked") Class<EvaluationResult> c = (Class<EvaluationResult>) o;
            for (It<EvaluationResult> it = VisualizationTree.findNewResults(context, cpol.getClustering()).filter(c); it.valid(); it.advance()) {
                // may end up displaying the wrong evaluation.
                if (context.getHierarchy().iterAncestors(it.get()).find(cpol.getClustering())) {
                    sr = it.get();
                    break;
                }
            }
        }
    }
    if (sr == null) {
        // Failed.
        return new StaticVisualizationInstance(context, task, plot, width, height, parent);
    }
    for (String header : sr.getHeaderLines()) {
        ypos = addHeader(plot, parent, ypos, header);
    }
    for (EvaluationResult.MeasurementGroup g : sr) {
        ypos = addHeader(plot, parent, ypos, g.getName());
        for (EvaluationResult.Measurement m : g) {
            ypos = addBarChart(plot, parent, ypos, m.getName(), m.getVal(), m.getMin(), m.getMax(), m.getExp(), m.lowerIsBetter());
        }
    }
    // scale vis
    double cols = 10;
    final StyleLibrary style = context.getStyleLibrary();
    final double margin = style.getSize(StyleLibrary.MARGIN);
    final String transform = SVGUtil.makeMarginTransform(width, height, cols, ypos, margin / StyleLibrary.SCALE);
    SVGUtil.setAtt(parent, SVGConstants.SVG_TRANSFORM_ATTRIBUTE, transform);
    return new StaticVisualizationInstance(context, task, plot, width, height, parent);
}
Also used : Element(org.w3c.dom.Element) It(de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.It) StyleLibrary(de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary) StaticVisualizationInstance(de.lmu.ifi.dbs.elki.visualization.visualizers.StaticVisualizationInstance) EvaluationResult(de.lmu.ifi.dbs.elki.result.EvaluationResult) ClusterStylingPolicy(de.lmu.ifi.dbs.elki.visualization.style.ClusterStylingPolicy) StylingPolicy(de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy) ClusterStylingPolicy(de.lmu.ifi.dbs.elki.visualization.style.ClusterStylingPolicy)

Aggregations

EvaluationResult (de.lmu.ifi.dbs.elki.result.EvaluationResult)1 It (de.lmu.ifi.dbs.elki.utilities.datastructures.iterator.It)1 ClusterStylingPolicy (de.lmu.ifi.dbs.elki.visualization.style.ClusterStylingPolicy)1 StyleLibrary (de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary)1 StylingPolicy (de.lmu.ifi.dbs.elki.visualization.style.StylingPolicy)1 StaticVisualizationInstance (de.lmu.ifi.dbs.elki.visualization.visualizers.StaticVisualizationInstance)1 Element (org.w3c.dom.Element)1