abstract static class TimeSeries implements Element {
protected XYSeries series;
private String axisName;
+ private String axisUnits;
private Color color;
- public TimeSeries(String axisName, String label, Color color) {
+ public TimeSeries(String axisName, String axisUnits, String label, Color color) {
this.series = new XYSeries(label);
- this.axisName = axisName;
+ this.axisName = String.format("%s (%s)", axisName, axisUnits);
+ this.axisUnits = axisUnits;
this.color = color;
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(this.series);
- XYItemRenderer renderer = new StandardXYItemRenderer();
+ XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
renderer.setSeriesPaint(0, color);
+ StandardXYToolTipGenerator tool_tip;
+
+ tool_tip = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", axisUnits),
+ new java.text.DecimalFormat("0.00"),
+ new java.text.DecimalFormat("0.00"));
+ renderer.setBaseToolTipGenerator(tool_tip);
int dataNum = g.getDataNum(this);
int axisNum = g.getAxisNum(this);
public JFreeChart createChart() {
NumberAxis xAxis = new NumberAxis("Time (s)");
xAxis.setAutoRangeIncludesZero(false);
- XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
XYPlot plot = new XYPlot();
plot.setDomainAxis(xAxis);
- plot.setRenderer(renderer);
plot.setOrientation(PlotOrientation.VERTICAL);
if (serial != null && flight != null) {
title = callsign + " - " + title;
}
- renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT,
plot, true);
ChartUtilities.applyCurrentTheme(chart);
static private class OverallGraphs {
AltosGraphTime.Element height =
- new AltosGraphTime.TimeSeries(String.format("Height (%s)", AltosConvert.height.show_units()), "Height (AGL)", red) {
+ new AltosGraphTime.TimeSeries("Height", AltosConvert.height.show_units(), "Height (AGL)", red) {
public void gotTimeData(double time, AltosDataPoint d) {
double height = d.height();
if (height != AltosRecord.MISSING)
};
AltosGraphTime.Element speed =
- new AltosGraphTime.TimeSeries(String.format("Speed (%s)", AltosConvert.speed.show_units()), "Vertical Speed", green) {
+ new AltosGraphTime.TimeSeries("Speed", AltosConvert.speed.show_units(), "Vertical Speed", green) {
public void gotTimeData(double time, AltosDataPoint d) {
double speed = d.speed();
if (speed != AltosRecord.MISSING)
};
AltosGraphTime.Element acceleration =
- new AltosGraphTime.TimeSeries(String.format("Acceleration (%s)",
- AltosConvert.accel.show_units()),
+ new AltosGraphTime.TimeSeries("Acceleration",
+ AltosConvert.accel.show_units(),
"Axial Acceleration", blue)
{
public void gotTimeData(double time, AltosDataPoint d) {
};
AltosGraphTime.Element temperature =
- new AltosGraphTime.TimeSeries("Temperature (\u00B0C)",
- "Board temperature", red)
+ new AltosGraphTime.TimeSeries("Temperature", "\u00B0C",
+ "Board temperature", red)
{
public void gotTimeData(double time, AltosDataPoint d) {
double temp = d.temperature();
};
AltosGraphTime.Element drogue_voltage =
- new AltosGraphTime.TimeSeries("Voltage (V)", "Drogue Continuity", yellow)
+ new AltosGraphTime.TimeSeries("Voltage", "(V)", "Drogue Continuity", yellow)
{
public void gotTimeData(double time, AltosDataPoint d) {
double v = d.drogue_voltage();
};
AltosGraphTime.Element main_voltage =
- new AltosGraphTime.TimeSeries("Voltage (V)", "Main Continuity", magenta)
+ new AltosGraphTime.TimeSeries("Voltage", "(V)", "Main Continuity", magenta)
{
public void gotTimeData(double time, AltosDataPoint d) {
double v = d.main_voltage();