diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java index d518d0cf..e300a3c4 100644 --- a/src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java +++ b/src/de/lmu/ifi/dbs/elki/visualization/visualizers/histogram/ColoredHistogramVisualizer.java @@ -23,13 +23,13 @@ package de.lmu.ifi.dbs.elki.visualization.visualizers.histogram; along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import java.util.Iterator; +import java.util.Collection; import org.apache.batik.util.SVGConstants; import org.w3c.dom.Element; import de.lmu.ifi.dbs.elki.data.NumberVector; -import de.lmu.ifi.dbs.elki.database.ids.DBID; +import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; import de.lmu.ifi.dbs.elki.database.relation.Relation; import de.lmu.ifi.dbs.elki.logging.LoggingUtil; import de.lmu.ifi.dbs.elki.math.DoubleMinMax; @@ -39,9 +39,9 @@ import de.lmu.ifi.dbs.elki.math.scales.LinearScale; 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.result.SamplingResult; import de.lmu.ifi.dbs.elki.utilities.DatabaseUtil; import de.lmu.ifi.dbs.elki.utilities.exceptions.ObjectNotFoundException; -import de.lmu.ifi.dbs.elki.utilities.iterator.IterableIterator; import de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer; import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID; import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GreaterEqualConstraint; @@ -111,6 +111,11 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends private StyleResult style; /** + * Sampling result + */ + private SamplingResult sample; + + /** * Constructor. * * @param task Visualization task @@ -123,6 +128,7 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends this.bins = bins; this.relation = task.getRelation(); this.style = task.getResult(); + this.sample = ResultUtil.getSamplingResult(relation); context.addResultListener(this); } @@ -180,10 +186,12 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends double[] inc = new double[cols]; inc[0] = frac; inc[snum + 1] = frac; - for(Iterator<DBID> iter = cspol.iterateClass(snum + off); iter.hasNext();) { - DBID id = iter.next(); + for(DBIDIter iter = cspol.iterateClass(snum + off); iter.valid(); iter.advance()) { + if(!sample.getSample().contains(iter)) { + continue; // TODO: can we test more efficiently than this? + } try { - double pos = proj.fastProjectDataToRenderSpace(relation.get(id)) / Projection.SCALE; + double pos = proj.fastProjectDataToRenderSpace(relation.get(iter)) / Projection.SCALE; histogram.aggregate(pos, inc); } catch(ObjectNotFoundException e) { @@ -196,8 +204,8 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends // Actual data distribution. double[] inc = new double[cols]; inc[0] = frac; - for(DBID id : relation.iterDBIDs()) { - double pos = proj.fastProjectDataToRenderSpace(relation.get(id)) / Projection.SCALE; + for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) { + double pos = proj.fastProjectDataToRenderSpace(relation.get(iditer)) / Projection.SCALE; histogram.aggregate(pos, inc); } } @@ -332,7 +340,7 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends * @author Erich Schubert * * @apiviz.stereotype factory - * @apiviz.uses P1DHistogramVisualizer oneway - - «create» + * @apiviz.uses ColoredHistogramVisualizer oneway - - «create» * * @param <NV> Number vector type */ @@ -391,9 +399,9 @@ public class ColoredHistogramVisualizer<NV extends NumberVector<NV, ?>> extends @Override public void processNewResult(HierarchicalResult baseResult, Result result) { // Find a style result to visualize: - IterableIterator<StyleResult> styleres = ResultUtil.filteredResults(result, StyleResult.class); + Collection<StyleResult> styleres = ResultUtil.filterResults(result, StyleResult.class); for(StyleResult c : styleres) { - IterableIterator<HistogramProjector<?>> ps = ResultUtil.filteredResults(baseResult, HistogramProjector.class); + Collection<HistogramProjector<?>> ps = ResultUtil.filterResults(baseResult, HistogramProjector.class); for(HistogramProjector<?> p : ps) { // register self final VisualizationTask task = new VisualizationTask(CNAME, c, p.getRelation(), this); |