diff options
author | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:38 +0000 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:38 +0000 |
commit | 14a486343aef55f97f54082d6b542dedebf6f3ba (patch) | |
tree | 000fcc4968578771ad265079eef7617d66de2cda /src/de/lmu/ifi/dbs/elki/visualization/visualizers/parallel/selection | |
parent | 8300861dc4c62c5567a4e654976072f854217544 (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.java | 46 |
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
|