From: Bill Kuker Date: Thu, 16 Feb 2012 01:03:52 +0000 (+0000) Subject: Add axis labels to charts X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=bc49119f120181946d9ab66c7b911e6fda326f08;p=sw%2Fmotorsim Add axis labels to charts --- diff --git a/gui/com/billkuker/rocketry/motorsim/fuel/AbstractFuelEditor.java b/gui/com/billkuker/rocketry/motorsim/fuel/AbstractFuelEditor.java index 03fb5e7..9649b8b 100644 --- a/gui/com/billkuker/rocketry/motorsim/fuel/AbstractFuelEditor.java +++ b/gui/com/billkuker/rocketry/motorsim/fuel/AbstractFuelEditor.java @@ -65,7 +65,7 @@ public abstract class AbstractFuelEditor extends JSplitPane { try { burnRate = new Chart( SI.MEGA(SI.PASCAL), SI.MILLIMETER.divide(SI.SECOND) - .asType(Velocity.class), f, "burnRate"); + .asType(Velocity.class), f, "burnRate", "Chamber Pressure", "Burn Rate"); } catch (NoSuchMethodException e) { throw new Error(e); } diff --git a/gui/com/billkuker/rocketry/motorsim/visual/BurnPanel.java b/gui/com/billkuker/rocketry/motorsim/visual/BurnPanel.java index 6199446..bfe5a79 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/BurnPanel.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/BurnPanel.java @@ -42,21 +42,21 @@ public class BurnPanel extends JPanel { SI.SECOND, SI.MEGA(SI.PASCAL), b, - "pressure"); + "pressure", "Time", "Chamber Pressure"); pressure.setDomain(burn.getData().keySet()); thrust = new Chart( SI.SECOND, SI.NEWTON, b, - "thrust"); + "thrust", "Time", "Thrust"); thrust.setDomain(burn.getData().keySet()); burnRate = new Chart( SI.MEGA(SI.PASCAL), SI.METERS_PER_SECOND, burn.getMotor().getFuel(), - "burnRate"); + "burnRate", "Chamber Pressure", "Burn Rate"); burnRate.setDomain( burnRate.new IntervalDomain( Amount.valueOf(0, SI.MEGA(SI.PASCAL)), diff --git a/gui/com/billkuker/rocketry/motorsim/visual/Chart.java b/gui/com/billkuker/rocketry/motorsim/visual/Chart.java index 08f6000..945f547 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/Chart.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/Chart.java @@ -118,12 +118,15 @@ public class Chart extends JPanel implem Unit xUnit; Unit yUnit; + String xLabel; + String yLabel; + Object source; Method f; Iterable> domain; - - public Chart(Unit xUnit, Unit yUnit, Object source, String method) + + public Chart(Unit xUnit, Unit yUnit, Object source, String method, String xLabel, String yLabel) throws NoSuchMethodException { super(new BorderLayout()); f = source.getClass().getMethod(method, Amount.class); @@ -132,12 +135,22 @@ public class Chart extends JPanel implem this.xUnit = xUnit; this.yUnit = yUnit; + + this.xLabel = xLabel; + this.yLabel = yLabel; RocketScience.addUnitPreferenceListener(this); setup(); } + private static String toTitle(Method f) { + String ret = f.getName().substring(0, 1).toUpperCase() + + f.getName().substring(1); + ret = ret.replaceAll("(\\p{Ll})(\\p{Lu})", "$1 $2"); + return ret; + } + private void setup(){ removeAll(); this.xUnit = RocketScience.UnitPreference.getUnitPreference() @@ -145,11 +158,10 @@ public class Chart extends JPanel implem this.yUnit = RocketScience.UnitPreference.getUnitPreference() .getPreferredUnit(yUnit); - chart = ChartFactory.createXYLineChart(f.getName().substring(0, 1) - .toUpperCase() - + f.getName().substring(1), // Title - this.xUnit.toString(), // x-axis Label - this.yUnit.toString(), // y-axis Label + chart = ChartFactory.createXYLineChart( + toTitle(f), // Title + xLabel + " (" + xUnit.toString() + ")", // x-axis Label + yLabel + " (" + yUnit.toString() + ")", // y-axis Label dataset, PlotOrientation.VERTICAL, // Plot Orientation false, // Show Legend true, // Use tool tips @@ -167,9 +179,9 @@ public class Chart extends JPanel implem sb.append(f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1)); sb.append("\n"); - sb.append(Chart.this.xUnit.toString()); + sb.append(Chart.this.chart.getXYPlot().getDomainAxis().getLabel()); sb.append(","); - sb.append(Chart.this.yUnit.toString()); + sb.append(Chart.this.chart.getXYPlot().getRangeAxis().getLabel()); sb.append("\n"); for (int i = 0; i < s.getItemCount(); i++) { sb.append(s.getX(i)); @@ -395,7 +407,7 @@ public class Chart extends JPanel implem g.setID(Amount.valueOf(10, SI.MILLIMETER)); Chart c = new Chart(SI.MILLIMETER, - SI.MILLIMETER.pow(2).asType(Area.class), g, "surfaceArea"); + SI.MILLIMETER.pow(2).asType(Area.class), g, "surfaceArea", "Regression", "Area"); c.setDomain(c.new IntervalDomain(Amount.valueOf(0, SI.CENTIMETER), g .webThickness())); diff --git a/gui/com/billkuker/rocketry/motorsim/visual/FuelPanel.java b/gui/com/billkuker/rocketry/motorsim/visual/FuelPanel.java index 2a9ca06..873ee17 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/FuelPanel.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/FuelPanel.java @@ -20,7 +20,7 @@ public class FuelPanel extends JSplitPane { Chart burnRate; try { burnRate = new Chart(SI.MEGA(SI.PASCAL), - SI.METERS_PER_SECOND, f, "burnRate"); + SI.METERS_PER_SECOND, f, "burnRate", "Chamber Pressure", "Burn Rate"); } catch (NoSuchMethodException e) { throw new Error(e); } diff --git a/gui/com/billkuker/rocketry/motorsim/visual/GrainPanel.java b/gui/com/billkuker/rocketry/motorsim/visual/GrainPanel.java index 0e42dd8..7276a26 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/GrainPanel.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/GrainPanel.java @@ -65,14 +65,14 @@ public class GrainPanel extends JPanel { SI.MILLIMETER, SI.MILLIMETER.pow(2).asType(Area.class), grain, - "surfaceArea"); + "surfaceArea", "Regression", "Area"); area.setDomain(area.new IntervalDomain(Amount.valueOf(0, SI.MILLIMETER), grain.webThickness())); volume = new Chart( SI.MILLIMETER, SI.MILLIMETER.pow(3).asType(Volume.class), grain, - "volume"); + "volume", "Regression", "Volume"); volume.setDomain(volume.new IntervalDomain(Amount.valueOf(0, SI.MILLIMETER), grain.webThickness())); area.setMaximumSize(new Dimension(200,100)); diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java index 8eeba32..362b399 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorPressureChart.java @@ -65,7 +65,7 @@ public class MultiMotorPressureChart extends JPanel implements BurnWatcher { JFreeChart chart = ChartFactory.createXYLineChart( "", // Title "Time (" + time.toString() + ")", // x-axis Label - "Pressure (" + pressureUnit.toString() + ")", // y-axis Label + "Chamber Pressure (" + pressureUnit.toString() + ")", // y-axis Label dataset, PlotOrientation.VERTICAL, // Plot Orientation true, // Show Legend true, // Use tool tips