use of org.knime.base.util.coordinate.NumericCoordinate in project knime-core by knime.
the class ParallelAxis method createParallelAxis.
/**
* Factory method to get an instance of a <code>ParallelAxis</code>.
* Determines whether a
* {@link org.knime.base.node.viz.plotter.parcoord.NumericParallelAxis} or
* a {@link org.knime.base.node.viz.plotter.parcoord.NominalParallelAxis}
* should be returned, based on the passed
* {@link org.knime.core.data.DataColumnSpec}.
*
* @param colSpec the column spec for this parallel axis.
* @return either a nominal or a numeric parallel axis based on the column
* spec.
* @see Coordinate
*/
public static ParallelAxis createParallelAxis(final DataColumnSpec colSpec) {
Coordinate coordinate = Coordinate.createCoordinate(colSpec);
ParallelAxis axis;
if (coordinate instanceof NumericCoordinate) {
axis = new NumericParallelAxis();
} else {
axis = new NominalParallelAxis();
}
axis.setName(colSpec.getName());
axis.setCoordinate(coordinate);
return axis;
}
use of org.knime.base.util.coordinate.NumericCoordinate in project knime-core by knime.
the class AbstractPlotter method createXCoordinate.
/**
* Recalculates the domain of the x axis. If preserve is set to false the
* passed values are taken as min and max no matter was was set before. If
* preserve is set to true (default) the possibly already available min and
* max values are preserved.
*
* @param min the min value
* @param max the max value {@link AbstractPlotter#setPreserve(boolean)}
*/
public void createXCoordinate(final int min, final int max) {
DataColumnDomainCreator xDomainCreator = new DataColumnDomainCreator();
int actualMin = min;
int actualMax = max;
if (getXAxis() != null && getXAxis().getCoordinate() != null && m_preserve) {
if (!(getXAxis().getCoordinate() instanceof NumericCoordinate)) {
return;
}
actualMin = (int) Math.min(min, ((NumericCoordinate) getXAxis().getCoordinate()).getMinDomainValue());
actualMax = (int) Math.max(max, ((NumericCoordinate) getXAxis().getCoordinate()).getMaxDomainValue());
}
xDomainCreator.setLowerBound(new IntCell(actualMin));
xDomainCreator.setUpperBound(new IntCell(actualMax));
DataColumnSpecCreator xSpecCreator = new DataColumnSpecCreator("X", IntCell.TYPE);
xSpecCreator.setDomain(xDomainCreator.createDomain());
Coordinate xCoordinate = Coordinate.createCoordinate(xSpecCreator.createSpec());
if (getXAxis() == null) {
Axis xAxis = new Axis(Axis.HORIZONTAL, getDrawingPaneDimension().width);
setXAxis(xAxis);
}
getXAxis().setCoordinate(xCoordinate);
}
use of org.knime.base.util.coordinate.NumericCoordinate in project knime-core by knime.
the class LinReg2LinePlotter method updatePaintModel.
/**
* Retrieves the linear regression params, updates the column selection
* boxes appropriately and adds the regression line to the scatterplot.
*/
@Override
public void updatePaintModel() {
DataProvider dataProvider = getDataProvider();
if (dataProvider == null) {
return;
}
RegressionContent content = ((LinReg2DataProvider) dataProvider).getLinRegContent();
if (content == null) {
return;
}
List<String> includedList = content.getCovariates();
String target = content.getSpec().getTargetCols().get(0).getName();
// set the target column to fix
((LinReg2LinePlotterProperties) getProperties()).setTargetColumn(target);
// get the included columns
((LinReg2LinePlotterProperties) getProperties()).setIncludedColumns(includedList.toArray(new String[includedList.size()]));
// update the combo boxes
DataTableSpec spec = getDataProvider().getDataArray(0).getDataTableSpec();
((LinReg2LinePlotterProperties) getProperties()).update(spec);
super.updatePaintModel();
double xMin = ((NumericCoordinate) getXAxis().getCoordinate()).getMinDomainValue();
double xMax = ((NumericCoordinate) getXAxis().getCoordinate()).getMaxDomainValue();
String xName = getSelectedXColumn().getName();
if (!xName.equals(target) && includedList.contains(xName)) {
double yMin = getApproximationFor(xName, xMin, content);
double yMax = getApproximationFor(xName, xMax, content);
((LinReg2LineDrawingPane) getDrawingPane()).setLineFirstPoint(getMappedXValue(new DoubleCell(xMin)), getMappedYValue(new DoubleCell(yMin)));
((LinReg2LineDrawingPane) getDrawingPane()).setLineLastPoint(getMappedXValue(new DoubleCell(xMax)), getMappedYValue(new DoubleCell(yMax)));
getDrawingPane().repaint();
}
}
use of org.knime.base.util.coordinate.NumericCoordinate in project knime-core by knime.
the class LinReg2LinePlotter method updateSize.
/**
* First calls super then adapts the regression line.
*/
@Override
public void updateSize() {
if (getXAxis() == null || getXAxis().getCoordinate() == null || getYAxis() == null || getYAxis().getCoordinate() == null) {
return;
}
super.updateSize();
DataProvider dataProvider = getDataProvider();
if (dataProvider == null) {
return;
}
RegressionContent content = ((LinReg2DataProvider) dataProvider).getLinRegContent();
if (content == null) {
return;
}
double xMin = ((NumericCoordinate) getXAxis().getCoordinate()).getMinDomainValue();
double xMax = ((NumericCoordinate) getXAxis().getCoordinate()).getMaxDomainValue();
String xName = getSelectedXColumn().getName();
List<String> includedList = content.getCovariates();
String target = content.getSpec().getTargetCols().get(0).getName();
if (!xName.equals(target) && includedList.contains(xName)) {
double yMin = getApproximationFor(xName, xMin, content);
double yMax = getApproximationFor(xName, xMax, content);
((LinReg2LineDrawingPane) getDrawingPane()).setLineFirstPoint(getMappedXValue(new DoubleCell(xMin)), getMappedYValue(new DoubleCell(yMin)));
((LinReg2LineDrawingPane) getDrawingPane()).setLineLastPoint(getMappedXValue(new DoubleCell(xMax)), getMappedYValue(new DoubleCell(yMax)));
}
}
use of org.knime.base.util.coordinate.NumericCoordinate in project knime-core by knime.
the class LinRegLinePlotter method updateSize.
/**
* First calls super then adapts the regression line.
*/
@Override
public void updateSize() {
if (getXAxis() == null || getXAxis().getCoordinate() == null || getYAxis() == null || getYAxis().getCoordinate() == null) {
return;
}
super.updateSize();
DataProvider dataProvider = getDataProvider();
if (dataProvider == null) {
return;
}
DataArray data = dataProvider.getDataArray(0);
if (data == null) {
return;
}
LinearRegressionContent params = ((LinRegDataProvider) dataProvider).getParams();
if (params == null) {
return;
}
double xMin = ((NumericCoordinate) getXAxis().getCoordinate()).getMinDomainValue();
double xMax = ((NumericCoordinate) getXAxis().getCoordinate()).getMaxDomainValue();
String xName = getSelectedXColumn().getName();
String[] temp = ((LinRegDataProvider) dataProvider).getLearningColumns();
if (temp == null) {
return;
}
List<String> includedCols = Arrays.asList(temp);
if (!xName.equals(params.getTargetColumnName()) && includedCols.contains(xName)) {
double yMin = params.getApproximationFor(xName, xMin);
double yMax = params.getApproximationFor(xName, xMax);
((LinRegLineDrawingPane) getDrawingPane()).setLineFirstPoint(getMappedXValue(new DoubleCell(xMin)), getMappedYValue(new DoubleCell(yMin)));
((LinRegLineDrawingPane) getDrawingPane()).setLineLastPoint(getMappedXValue(new DoubleCell(xMax)), getMappedYValue(new DoubleCell(yMax)));
}
}
Aggregations