public String[] createTickmarkTexts() { double roundFactor = MathUtils.computeRoundFactor(getMinValue(), getMaxValue(), 3); return createTickmarkTexts(getMinValue(), getMaxValue(), getNumMajorTicks(), roundFactor); }
private String getAxisText(DiagramAxis axis) { StringBuilder sb = new StringBuilder(37); if (axis.getName() != null && axis.getName().length() > 0) { sb.append(axis.getName()); } if (axis.getUnit() != null && axis.getUnit().length() > 0) { sb.append(" ("); sb.append(axis.getUnit()); sb.append(")"); } return sb.toString(); }
public void setOptimalSubDivision(int numMajorTicksMin, int numMajorTicksMax, int numMinorTicks) { final double oldMinValue = minValue; final double oldMaxValue = maxValue; final double oldDelta = oldMaxValue - oldMinValue; double deltaDeltaMin = Double.MAX_VALUE; int numMajorTicksOpt = numMajorTicks; double newMinValueOpt = oldMinValue; double newMaxValueOpt = oldMaxValue; for (int numMajorTicks = numMajorTicksMin; numMajorTicks <= numMajorTicksMax; numMajorTicks++) { final double tickDist = getOptimalTickDistance(oldMinValue, oldMaxValue, numMajorTicks); final double newMinValue = adjustFloor(oldMinValue, tickDist); final double newMaxValue = adjustCeil(oldMaxValue, tickDist); final double newDelta = newMaxValue - newMinValue; final double deltaDelta = Math.abs(newDelta - oldDelta); if (deltaDelta < deltaDeltaMin) { deltaDeltaMin = deltaDelta; numMajorTicksOpt = numMajorTicks; newMinValueOpt = newMinValue; newMaxValueOpt = newMaxValue; } } setSubDivision(newMinValueOpt, newMaxValueOpt, numMajorTicksOpt, numMinorTicks); }
public double getMajorTickMarkDistance() { return (getMaxValue() - getMinValue()) / (getNumMajorTicks() - 1); }
public void setSubDivision(double minValue, double maxValue, int numMajorTicks, int numMinorTicks) { setValueRange(minValue, maxValue); setNumMajorTicks(numMajorTicks); setNumMinorTicks(numMinorTicks); }
diagramAxis.setName("bibo"); assertEquals("bibo", diagramAxis.getName()); assertEquals(1, eventCounter.counts); diagramAxis.setName(null); assertEquals(null, diagramAxis.getName()); assertEquals(2, eventCounter.counts); diagramAxis.setUnit("bibo"); assertEquals("bibo", diagramAxis.getUnit()); assertEquals(3, eventCounter.counts); diagramAxis.setUnit(null); assertEquals(null, diagramAxis.getUnit()); assertEquals(4, eventCounter.counts); assertEquals(1.0, diagramAxis.getUnitFactor(), 1e-10); diagramAxis.setUnitFactor(0.5); assertEquals(0.5, diagramAxis.getUnitFactor(), 1e-10); assertEquals(5, eventCounter.counts); diagramAxis.setNumMajorTicks(5); assertEquals(5, diagramAxis.getNumMajorTicks()); assertEquals(6, eventCounter.counts); diagramAxis.setNumMinorTicks(3); assertEquals(3, diagramAxis.getNumMinorTicks()); assertEquals(7, eventCounter.counts);
public void testSetOptimalSubDivision() { diagramAxis.setValueRange(13.1, 16.2); assertEquals(1, eventCounter.counts); diagramAxis.setOptimalSubDivision(4, 6, 8); assertEquals(16.5, diagramAxis.getMaxValue(), 1e-9); assertEquals(12.75, diagramAxis.getMinValue(), 1e-9); assertEquals(6, diagramAxis.getNumMajorTicks()); assertEquals(8, diagramAxis.getNumMinorTicks()); assertEquals(4, eventCounter.counts); }
public void testSetSubDivision() { diagramAxis.setSubDivision(12.4, 83.6, 7, 4); assertEquals(12.4, diagramAxis.getMinValue(), 1e-9); assertEquals(83.6, diagramAxis.getMaxValue(), 1e-9); assertEquals(7, diagramAxis.getNumMajorTicks()); assertEquals(4, diagramAxis.getNumMinorTicks()); assertEquals(3, eventCounter.counts); }
private void validate(Graphics2D g2d, int x, int y, int width, int height) { fontMetrics = g2d.getFontMetrics(); xTickTexts = xAxis.createTickmarkTexts(); yTickTexts = yAxis.createTickmarkTexts(); // define y-Axis _values final int fontAscent = fontMetrics.getAscent(); maxYTickTextWidth = 0; for (String yTickText : yTickTexts) { int sw = fontMetrics.stringWidth(yTickText); maxYTickTextWidth = Math.max(maxYTickTextWidth, sw); } final int widthMaxX = fontMetrics.stringWidth(xTickTexts[xTickTexts.length - 1]); int x1 = textGap + fontAscent + textGap + maxYTickTextWidth + textGap + majorTickLength; int y1 = textGap + fontAscent / 2; int x2 = x + width - (textGap + widthMaxX / 2); int y2 = y + height - (textGap + fontAscent + textGap + fontAscent + textGap + majorTickLength); final int w = x2 - x1 + 1; final int h = y2 - y1 + 1; graphArea = new Rectangle(x1, y1, w, h); transform = null; if (w > 0 && h > 0) { transform = new RectTransform(new Range(xAxis.getMinValue(), xAxis.getMaxValue()), new Range(yAxis.getMinValue(), yAxis.getMaxValue()), new Range(graphArea.x, graphArea.x + graphArea.width), new Range(graphArea.y + graphArea.height, graphArea.y)); } setValid(w > 0 && h > 0); }
n1 = xAxis.getNumMajorTicks(); n2 = xAxis.getNumMinorTicks(); n = (n1 - 1) * (n2 + 1) + 1; for (int i = 0; i < n; i++) { n1 = yAxis.getNumMajorTicks(); n2 = yAxis.getNumMinorTicks(); n = (n1 - 1) * (n2 + 1) + 1; for (int i = 0; i < n; i++) { if(yAxis.isMinToMax()) y0 = yMin + (i * (yMax - yMin)) / (n - 1); else
public TimeSeriesDiagram(final Product product) { this.product = product; dateAxis = new DateAxis("Band", ""); setXAxis(dateAxis); setYAxis(new DiagramAxis("", "1")); }
public void resetMinMaxAccumulatorsFromAxes() { xMinAccum = getXAxis().getMinValue(); xMaxAccum = getXAxis().getMaxValue(); yMinAccum = getYAxis().getMinValue(); yMaxAccum = getYAxis().getMaxValue(); }
public void testGetOptimalTickDistance() { assertEquals(10d, DiagramAxis.getOptimalTickDistance(12, 31, 3), 1e-6); assertEquals(0.1d, DiagramAxis.getOptimalTickDistance(0.12, 0.31, 3), 1e-9); assertEquals(2.5d, DiagramAxis.getOptimalTickDistance(52, 57, 3), 1e-6); assertEquals(2.5d, DiagramAxis.getOptimalTickDistance(15, 20, 3), 1e-6); assertEquals(4.0d, DiagramAxis.getOptimalTickDistance(14.8, 20.3, 3), 1e-6); assertEquals(5.0d, DiagramAxis.getOptimalTickDistance(14.8, 24.8, 3), 1e-6); assertEquals(2.0d, DiagramAxis.getOptimalTickDistance(14.8, 18.8, 3), 1e-6); assertEquals(2.0d, DiagramAxis.getOptimalTickDistance(10.2, 13.8, 3), 1e-6); assertEquals(2.0d, DiagramAxis.getOptimalTickDistance(10.2, 13.8, 3), 1e-6); assertEquals(7500.0d, DiagramAxis.getOptimalTickDistance(-10200, 5.0, 3), 1e-6); }
public EndmemberFormModel(AppContext appContext) { this.appContext = appContext; endmemberListModel = new DefaultListModel<>(); endmemberListSelectionModel = new DefaultListSelectionModel(); endmemberListSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); endmemberListModel.addListDataListener(new EndmemberListDataListener()); endmemberListSelectionModel.addListSelectionListener(new EndmemberListSelectionListener()); endmemberDiagram = new Diagram(); endmemberDiagram.setXAxis(new DiagramAxis("Wavelength", "")); endmemberDiagram.setYAxis(new DiagramAxis("Radiation", "")); endmemberDiagram.setDrawGrid(false); propertyChangeSupport = new PropertyChangeSupport(this); }
@Override public void setUp() { Diagram diagram = new Diagram(); diagramAxis = new DiagramAxis(); diagram.setXAxis(diagramAxis); eventCounter = new EventCounter(); diagram.addChangeListener(eventCounter); }