summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:38 +0000
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:38 +0000
commit14a486343aef55f97f54082d6b542dedebf6f3ba (patch)
tree000fcc4968578771ad265079eef7617d66de2cda /src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection
parent8300861dc4c62c5567a4e654976072f854217544 (diff)
Import Upstream version 0.6.0
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection')
-rw-r--r--src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java
index d7ccb072..92e5f64c 100644
--- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java
+++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection/SelectionLineVisualization.java
@@ -31,6 +31,7 @@ import org.w3c.dom.Element;
import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.database.datastore.DataStoreListener;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
+import de.lmu.ifi.dbs.elki.database.ids.DBIDRef;
import de.lmu.ifi.dbs.elki.database.ids.DBIDs;
import de.lmu.ifi.dbs.elki.result.DBIDSelection;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
@@ -130,13 +131,10 @@ public class SelectionLineVisualization extends AbstractVisFactory {
DBIDs selection = selContext.getSelectedIds();
for(DBIDIter iter = selection.iter(); iter.valid(); iter.advance()) {
- double[] yPos = proj.fastProjectDataToRenderSpace(relation.get(iter));
-
- SVGPath path = new SVGPath();
- for(int i = 0; i < proj.getVisibleDimensions(); i++) {
- path.drawTo(getVisibleAxisX(i), yPos[i]);
+ Element marker = drawLine(iter);
+ if(marker == null) {
+ continue;
}
- Element marker = path.makeElement(svgp);
SVGUtil.addCSSClass(marker, MARKER);
layer.appendChild(marker);
}
@@ -144,6 +142,42 @@ public class SelectionLineVisualization extends AbstractVisFactory {
}
/**
+ * Draw a single line.
+ *
+ * @param iter Object reference
+ * @return SVG Element
+ */
+ private Element drawLine(DBIDRef iter) {
+ SVGPath path = new SVGPath();
+ double[] yPos = proj.fastProjectDataToRenderSpace(relation.get(iter));
+ boolean draw = false, drawprev = false, drawn = false;
+ for(int i = 0; i < yPos.length; i++) {
+ // NaN handling:
+ if(yPos[i] != yPos[i]) {
+ draw = false;
+ drawprev = false;
+ continue;
+ }
+ if(draw) {
+ if(drawprev) {
+ path.moveTo(getVisibleAxisX(i - 1), yPos[i - 1]);
+ drawprev = false;
+ }
+ path.lineTo(getVisibleAxisX(i), yPos[i]);
+ drawn = true;
+ }
+ else {
+ drawprev = true;
+ }
+ draw = true;
+ }
+ if(!drawn) {
+ return null; // Not enough data.
+ }
+ return path.makeElement(svgp);
+ }
+
+ /**
* Adds the required CSS-Classes
*
* @param svgp SVG-Plot