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

allow for repeated categories in bar charts

parent fb7d6f5c
Branches
No related tags found
No related merge requests found
......@@ -16,7 +16,6 @@
package com.xeiam.xchart.internal.chartpart;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
......@@ -56,13 +55,13 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
// where the tick should begin in the working space in pixels
double margin = Utils.getTickStartOffset(workingSpace, tickSpace);
// get all categories
List<Object> categories = new ArrayList<Object>();
List<?> firstXAxis = (List<?>) chartPainter.getAxisPair().getSeriesMap().values().iterator().next().getXData();
Series firstSeries = chartPainter.getAxisPair().getSeriesMap().values().iterator().next(); // we use this to check all series have the exact same length and values
for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) {
// verify all series have exactly the same xAxis
if (chartPainter.getAxisPair().getSeriesMap().size() > 1) {
Iterator<?> firstSeriesItr = firstSeries.getXData().iterator();
for (Series series : chartPainter.getAxisPair().getSeriesMap().values()) {
Iterator<?> firstSeriesItr = firstXAxis.iterator();
Iterator<?> xItr = series.getXData().iterator();
while (xItr.hasNext()) {
......@@ -72,6 +71,17 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
if (!firstSeriesNext.equals(next)) {
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) {
......@@ -83,25 +93,22 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
else if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
x = next;
}
if (!categories.contains(x)) {
categories.add(x);
}
}
}
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.String) {
double gridStep = (tickSpace / (double) categories.size());
double gridStep = (tickSpace / (double) firstXAxis.size());
double firstPosition = gridStep / 2.0;
int counter = 0;
for (Object category : categories) {
for (Object category : firstXAxis) {
tickLabels.add(category.toString());
double tickLabelPosition = margin + firstPosition + gridStep * counter++;
tickLocations.add(tickLabelPosition);
}
}
double gridStep = (tickSpace / (double) categories.size());
double gridStep = (tickSpace / (double) firstXAxis.size());
double firstPosition = gridStep / 2.0;
// generate all tickLabels and tickLocations from the first to last position
......@@ -116,7 +123,7 @@ public class AxisTickBarChartCalculator extends AxisTickCalculator {
}
int counter = 0;
for (Object category : categories) {
for (Object category : firstXAxis) {
if (chartPainter.getAxisPair().getXAxis().getAxisType() == AxisType.Number) {
tickLabels.add(numberFormatter.formatNumber(new BigDecimal(category.toString()), minValue, maxValue, axisDirection));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment