Skip to content
Snippets Groups Projects
Commit af9445b4 authored by Tim Molter's avatar Tim Molter
Browse files

clean up AxisTickBarChartCalculator

parent a7a17d51
No related branches found
No related tags found
No related merge requests found
......@@ -48,8 +48,10 @@ public class BarChart05 implements ExampleChart {
// Create Chart
Chart chart = new ChartBuilder().chartType(ChartType.Bar).width(800).height(600).title("Temperature vs. Color").xAxisTitle("Color").yAxisTitle("Temperature").theme(ChartTheme.GGPlot2).build();
chart.addSeries("fish", new ArrayList<String>(Arrays.asList(new String[] { "Blue", "Red", "Green", "Yellow" })), new ArrayList<Number>(Arrays.asList(new Number[] { -40, 30, 20, 60 })));
chart.addSeries("worms", new ArrayList<String>(Arrays.asList(new String[] { "Blue", "Red", "Green", "Yellow" })), new ArrayList<Number>(Arrays.asList(new Number[] { 50, 10, -20, 40 })));
chart.addSeries("fish", new ArrayList<String>(Arrays.asList(new String[] { "Blue", "Red", "Green", "Yellow", "Yellow" })), new ArrayList<Number>(Arrays.asList(new Number[] { -40, 30, 20, 60,
60 })));
chart.addSeries("worms", new ArrayList<String>(Arrays.asList(new String[] { "Blue", "Red", "Green", "Yellow", "Yellow" })), new ArrayList<Number>(Arrays.asList(new Number[] { 50, 10, -20, 40,
60 })));
return chart;
}
......
......@@ -17,7 +17,6 @@ package com.xeiam.xchart.internal.chartpart;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import com.xeiam.xchart.Series;
......@@ -55,83 +54,48 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
// where the tick should begin in the working space in pixels
double margin = Utils.getTickStartOffset(workingSpace, tickSpace);
List<?> firstXAxis = (List<?>) chartPainter.getAxisPair().getSeriesMap().values().iterator().next().getXData();
List<?> categories = (List<?>) chartPainter.getAxisPair().getSeriesMap().values().iterator().next().getXData();
// verify all series have exactly the same xAxis
if (chartPainter.getAxisPair().getSeriesMap().size() > 1) {
for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) {
Iterator<?> firstSeriesItr = firstXAxis.iterator();
Iterator<?> xItr = series.getXData().iterator();
while (xItr.hasNext()) {
// check matching
Object next = xItr.next();
Object firstSeriesNext = firstSeriesItr.next();
if (!firstSeriesNext.equals(next)) {
throw new IllegalArgumentException("X-Axis data must exactly match all other Series X-Axis data for Bar Charts!!");
}
if (!series.getXData().equals(categories)) {
throw new IllegalArgumentException("X-Axis data must exactly match all other Series X-Axis data for Bar Charts!!");
}
}
}
for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) {
Iterator<?> xItr = series.getXData().iterator();
while (xItr.hasNext()) {
// check matching
Object next = xItr.next();
Object x = null;
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
x = next;
}
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) {
x = (double) (((Date) next).getTime());
}
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
x = next;
}
}
}
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
double gridStep = (tickSpace / (double) firstXAxis.size());
double firstPosition = gridStep / 2.0;
int counter = 0;
for (Object category : firstXAxis) {
tickLabels.add(category.toString());
double tickLabelPosition = margin + firstPosition + gridStep * counter++;
tickLocations.add(tickLabelPosition);
}
}
double gridStep = (tickSpace / (double) firstXAxis.size());
// generate all tickLabels and tickLocations from the first to last position
double gridStep = (tickSpace / (double) categories.size());
double firstPosition = gridStep / 2.0;
// generate all tickLabels and tickLocations from the first to last position
// set up String formatters that may be encountered
NumberFormatter numberFormatter = null;
DateFormatter dateFormatter = null;
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
numberFormatter = new NumberFormatter(styleManager);
}
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) {
dateFormatter = new DateFormatter(chartPainter.getStyleManager());
}
int counter = 0;
for (Object category : firstXAxis) {
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
for (Object category : categories) {
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
tickLabels.add(category.toString());
double tickLabelPosition = margin + firstPosition + gridStep * counter++;
tickLocations.add(tickLabelPosition);
}
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
tickLabels.add(numberFormatter.formatNumber(new BigDecimal(category.toString()), minValue, maxValue, axisDirection));
}
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Date) {
long span = (long) Math.abs(maxValue - minValue); // in data space
long gridStepHint = (long) (span / (double) tickSpace * styleManager.getXAxisTickMarkSpacingHint());
long timeUnit = dateFormatter.getTimeUnit(gridStepHint);
tickLabels.add(dateFormatter.formatDate(((Number) category).doubleValue(), timeUnit));
tickLabels.add(dateFormatter.formatDate(((Number) ((Date) category).getTime()).doubleValue(), timeUnit));
}
double tickLabelPosition = (int) (margin + firstPosition + gridStep * counter++);
tickLocations.add(tickLabelPosition);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment