From: Patrick Plitzner
Date: Fri, 13 Jul 2018 06:32:01 +0000 (+0200)
Subject: ref #7549 Add/use apache common math for frequency distribution
X-Git-Tag: 5.2.0^2~91
X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/a3a12095b7d9bec94f1e1d924eb007308a78e059
ref #7549 Add/use apache common math for frequency distribution
---
diff --git a/eu.etaxonomy.taxeditor.cdmlib/.classpath b/eu.etaxonomy.taxeditor.cdmlib/.classpath
index c03a7c6e0..2b1ea6a1e 100644
--- a/eu.etaxonomy.taxeditor.cdmlib/.classpath
+++ b/eu.etaxonomy.taxeditor.cdmlib/.classpath
@@ -1,5 +1,6 @@
+
diff --git a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
index 50d2891fd..ba8b680bc 100644
--- a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
+++ b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
@@ -231,6 +231,7 @@ Export-Package: com.google.api,
org.apache.commons.lang.exception,
org.apache.commons.lang.text,
org.apache.commons.logging,
+ org.apache.commons.math3.stat,
org.apache.fop.apps,
org.apache.http,
org.apache.http.client,
@@ -869,5 +870,6 @@ Bundle-ClassPath: .,
lib/lucene-sandbox-5.4.1.jar,
lib/lucene-suggest-5.4.1.jar,
lib/redmine-java-api-3.1.0.jar,
- lib/org.swtchart_0.10.0.v20160212.jar
+ lib/org.swtchart_0.10.0.v20160212.jar,
+ lib/commons-math3-3.6.1.jar
Import-Package: eu.etaxonomy.cdm.api.application
diff --git a/eu.etaxonomy.taxeditor.cdmlib/build.properties b/eu.etaxonomy.taxeditor.cdmlib/build.properties
index 0ece366f4..2c4848053 100644
--- a/eu.etaxonomy.taxeditor.cdmlib/build.properties
+++ b/eu.etaxonomy.taxeditor.cdmlib/build.properties
@@ -223,7 +223,8 @@ bin.includes = META-INF/,\
lib/lucene-suggest-5.4.1.jar,\
lib/cdmlib-cache-5.2.0-SNAPSHOT.jar,\
lib/redmine-java-api-3.1.0.jar,\
- lib/org.swtchart_0.10.0.v20160212.jar
+ lib/org.swtchart_0.10.0.v20160212.jar,\
+ lib/commons-math3-3.6.1.jar
jars.compile.order = .
output.. = bin/
diff --git a/eu.etaxonomy.taxeditor.cdmlib/lib/commons-math3-3.6.1.jar b/eu.etaxonomy.taxeditor.cdmlib/lib/commons-math3-3.6.1.jar
new file mode 100644
index 000000000..0ff582cfc
Binary files /dev/null and b/eu.etaxonomy.taxeditor.cdmlib/lib/commons-math3-3.6.1.jar differ
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CategoricalDataHistogram.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CategoricalDataHistogram.java
index 5a25d8c5d..d84cc8ae2 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CategoricalDataHistogram.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CategoricalDataHistogram.java
@@ -8,8 +8,10 @@
*/
package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.math3.stat.Frequency;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.State;
@@ -22,23 +24,28 @@ import eu.etaxonomy.cdm.model.description.State;
public class CategoricalDataHistogram {
private Feature feature;
- private Map stateCountMap;
+ private Frequency frequency;
+ private List states;
public CategoricalDataHistogram(Feature feature) {
this.feature = feature;
- this.stateCountMap = new HashMap<>();
+ this.states = new ArrayList<>();
+ this.frequency = new Frequency();
feature.getSupportedCategoricalEnumerations()
.forEach(voc->voc.getTerms()
- .forEach(state->stateCountMap.put(state, 0)));
+ .forEach(state->states.add(state)));
}
public void addState(State state){
- Integer integer = stateCountMap.get(state);
- stateCountMap.put(state, integer+1);
+ frequency.addValue(state.getLabel());
+ }
+
+ public long getCount(State state){
+ return frequency.getCount(state.getLabel());
}
- public Map getStateCountMap() {
- return stateCountMap;
+ public List getStates() {
+ return states;
}
public Feature getFeature() {
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/ChartTooltip.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/ChartTooltip.java
index 607024892..f586ffc54 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/ChartTooltip.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/ChartTooltip.java
@@ -8,9 +8,7 @@
*/
package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
+import java.util.List;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
@@ -57,22 +55,25 @@ public class ChartTooltip extends ToolTip {
Chart chart = new Chart(parent, SWT.NONE);
chart.setLayoutData(new GridData(600, 300));
+ //get histogram for column
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
CategoricalDataHistogram histogram = matrix.getFeatureToHistogramMap().get(feature);
- // set titles
+ // set chart title
chart.getTitle().setText(feature.getLabel());
IAxis xAxis = chart.getAxisSet().getXAxis(0);
- Map stateCountMap = histogram.getStateCountMap();
- String[] states = new String[stateCountMap.size()];
- double[] counts = new double[stateCountMap.size()];
+
+ //initalize x and y axis values
+ List statesList = histogram.getStates();
+ String[] states = new String[statesList.size()];
+ double[] counts = new double[statesList.size()];
+
int index = 0;
- for(Iterator> iterator = histogram.getStateCountMap().entrySet().iterator();iterator.hasNext();){
- Entry entry = iterator.next();
- states[index] = entry.getKey().getLabel();
- counts[index] = entry.getValue();
+ for (State state : statesList) {
+ states[index] = state.getLabel();
+ counts[index] = histogram.getCount(state);
index++;
}
xAxis.setCategorySeries(states);
@@ -82,12 +83,9 @@ public class ChartTooltip extends ToolTip {
IAxis yAxis = chart.getAxisSet().getYAxis(0);
yAxis.getTitle().setVisible(false);
-// yAxis.getTick().setVisible(false);
-// chart.setOrientation(SWT.VERTICAL);
chart.getLegend().setVisible(false);
- // create bar series
IBarSeries barSeries = (IBarSeries) chart.getSeriesSet()
.createSeries(SeriesType.BAR, "state counts");
ISeriesLabel seriesLabel = barSeries.getLabel();
@@ -95,7 +93,6 @@ public class ChartTooltip extends ToolTip {
seriesLabel.setVisible(true);
barSeries.setYSeries(counts);
- // adjust the axis range
chart.getAxisSet().adjustRange();
return chart;
@@ -116,7 +113,7 @@ public class ChartTooltip extends ToolTip {
&& rowPos==1
&& colIndex>=CharacterMatrix.LEADING_COLUMN_COUNT
&& histogram!=null
- && !histogram.getStateCountMap().isEmpty()) {
+ && !histogram.getStates().isEmpty()) {
return true;
}
return false;