diff options
author | Erich Schubert <erich@debian.org> | 2012-06-30 00:55:33 +0200 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:34 +0000 |
commit | 4343785ebed9d4145f417d86d581f18a0d31e4ac (patch) | |
tree | 546b0aa227d50caf4246be12f89ffcbae924f8e0 /src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java | |
parent | 593eae6c91717eb9f4ff5088ba460dd4210509c0 (diff) | |
parent | ace5fa7f57d49756c0e1b111a30f3b6a9436c1cb (diff) |
Import Debian changes 0.5.0-1
elki (0.5.0-1) unstable; urgency=low
* New upstream release: 0.5.0 final.
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java index f69bdc59..2369588b 100644 --- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java +++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/optics/OPTICSClusterVisualization.java @@ -23,8 +23,10 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.optics; along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import java.util.Iterator; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.batik.util.SVGConstants; import org.w3c.dom.Element; @@ -38,8 +40,8 @@ import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.result.HierarchicalResult; import de.lmu.ifi.dbs.elki.result.Result; import de.lmu.ifi.dbs.elki.result.ResultUtil; -import de.lmu.ifi.dbs.elki.utilities.iterator.IterableIterator; import de.lmu.ifi.dbs.elki.visualization.VisualizationTask; +import de.lmu.ifi.dbs.elki.visualization.colors.ColorLibrary; import de.lmu.ifi.dbs.elki.visualization.css.CSSClass; import de.lmu.ifi.dbs.elki.visualization.projector.OPTICSProjector; import de.lmu.ifi.dbs.elki.visualization.style.StyleLibrary; @@ -103,9 +105,8 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO */ @SuppressWarnings("unchecked") protected static Clustering<OPTICSModel> findOPTICSClustering(Result result) { - Iterator<Clustering<?>> cs = ResultUtil.filteredResults(result, Clustering.class); - while (cs.hasNext()) { - Clustering<?> clus = cs.next(); + Collection<Clustering<?>> cs = ResultUtil.filterResults(result, Clustering.class); + for(Clustering<?> clus : cs) { if(clus.getToplevelClusters().size() == 0) { continue; } @@ -126,7 +127,15 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO protected void redraw() { makeLayerElement(); addCSSClasses(); - drawClusters(clus.getToplevelClusters(), 1); + + ColorLibrary colors = context.getStyleLibrary().getColorSet(StyleLibrary.PLOT); + HashMap<Cluster<?>, String> colormap = new HashMap<Cluster<?>, String>(); + int cnum = 0; + for (Cluster<?> c : clus.getAllClusters()) { + colormap.put(c, colors.getColor(cnum)); + cnum++; + } + drawClusters(clus.getToplevelClusters(), 1, colormap); } /** @@ -134,9 +143,11 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO * * @param clusters Current set of clusters * @param depth Recursion depth + * @param colormap Color mapping */ - private void drawClusters(List<Cluster<OPTICSModel>> clusters, int depth) { + private void drawClusters(List<Cluster<OPTICSModel>> clusters, int depth, Map<Cluster<?>,String> colormap) { final double scale = StyleLibrary.SCALE; + for(Cluster<OPTICSModel> cluster : clusters) { try { OPTICSModel model = cluster.getModel(); @@ -145,6 +156,10 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO final double y = plotheight + depth * scale * 0.01; Element e = svgp.svgLine(x1, y, x2, y); SVGUtil.addCSSClass(e, CSS_BRACKET); + String color = colormap.get(cluster); + if (color != null) { + SVGUtil.setAtt(e, SVGConstants.SVG_STYLE_ATTRIBUTE, SVGConstants.CSS_STROKE_PROPERTY+":"+color); + } layer.appendChild(e); } catch(ClassCastException e) { @@ -153,7 +168,7 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO // Descend final List<Cluster<OPTICSModel>> children = cluster.getChildren(); if(children != null) { - drawClusters(children, depth + 1); + drawClusters(children, depth + 1, colormap); } } } @@ -190,7 +205,7 @@ public class OPTICSClusterVisualization<D extends Distance<D>> extends AbstractO @Override public void processNewResult(HierarchicalResult baseResult, Result result) { - IterableIterator<OPTICSProjector<?>> ops = ResultUtil.filteredResults(result, OPTICSProjector.class); + Collection<OPTICSProjector<?>> ops = ResultUtil.filterResults(result, OPTICSProjector.class); for(OPTICSProjector<?> p : ops) { final Clustering<OPTICSModel> ocl = findOPTICSClustering(baseResult); if(ocl != null) { |