Bar Charts Side By Side - oliverwatkins/Iceberg-Charts GitHub Wiki
Bar charts can also hold multiple series.
We can define a list of DataPointBar objects and add them to an ArrayList.
We can then add these values (which represent one multi-bar datapoint) to something called a DataPointMultiBar. In the constructor we can say if we want the data side-by-side or stacked :
DataPointMultiBar mb1 = new DataPointMultiBar(values, "2007", MultiBarMode.SIDE_BY_SIDE);
Once we have a number of these elements we can add them to an array or list and then pass them into an XYDataSeries. The XYDataSeries also needs to a define a UIPoint for this special data type, namely, a UIPointMultiBarSideBySide. The 70 represents the percentage between points where the bars fill up to :
XYDataSeries series = new XYDataSeries(multiBarList,
new UIPointMultiBarSideBySide(70), null, "1994");
ArrayList<DataPointMultiBar> multiBarList = new ArrayList<DataPointMultiBar>();
Color c1 = new Color(112,12,52);
Color c2 = new Color(62,82,212);
Color c3 = new Color(72,52,112);
Color c4 = new Color(82,112,32);
Color c5 = new Color(170,62,22);
ArrayList<DataPointBar> values = new ArrayList<DataPointBar>();
values.add(new DataPointBar("Automobile", 51, c1));
values.add(new DataPointBar("Food Industry", 25, c2 ));
values.add(new DataPointBar("Cosmetics", 10, c3));
values.add(new DataPointBar("Travel Products", 5, c4 ));
values.add(new DataPointBar("Government", 67, c5 ));
DataPointMultiBar mb1 = new DataPointMultiBar(values, "2007", MultiBarMode.SIDE_BY_SIDE);
multiBarList.add(mb1);
ArrayList<DataPointBar> values2 = new ArrayList<DataPointBar>();
values2.add(new DataPointBar("Automobile", 80, c1));
values2.add(new DataPointBar("Food Industry", 45, c2));
values2.add(new DataPointBar("Cosmetics", 12, c3));
values2.add(new DataPointBar("Travel Products", 14, c4));
values2.add(new DataPointBar("Government", 10, c5));
DataPointMultiBar mb2 = new DataPointMultiBar(values2, "2008", MultiBarMode.SIDE_BY_SIDE);
multiBarList.add(mb2);
ArrayList<DataPointBar> values3 = new ArrayList<DataPointBar>();
values3.add(new DataPointBar("Automobile", 5, c1));
values3.add(new DataPointBar("Food Industry", 4, c2));
values3.add(new DataPointBar("Cosmetics", 3, c3));
values3.add(new DataPointBar("Travel Products", 1, c4));
values3.add(new DataPointBar("Government", 2, c5));
DataPointMultiBar mb3 = new DataPointMultiBar(values3, "2009", MultiBarMode.SIDE_BY_SIDE);
multiBarList.add(mb3);
ArrayList<XYDataSeries> xySeriesList = new ArrayList<XYDataSeries>();
XYDataSeries series = new XYDataSeries(multiBarList, new UIPointMultiBarSideBySide(70), null, "1994");
xySeriesList.add(series);
XYChart chart = new XYChart("Side by Side", "Year", "Percent Taxed", xySeriesList);
chart.rightOffset = 200;
chart.yAxis.setMinValue(0);
chart.yAxis.setMaxValue(100);
ArrayList<DataPointMultiBar> multiBarList = new ArrayList<DataPointMultiBar>();
Color c1 = new Color(112,12,52);
Color c2 = new Color(62,82,212);
Color c3 = new Color(72,52,112);
Color c4 = new Color(82,112,32);
Color c5 = new Color(170,62,22);
ArrayList<DataPointBar> values = new ArrayList<DataPointBar>();
values.add(new DataPointBar("Automobile", 51, c1));
values.add(new DataPointBar("Food Industry", 25, c2 ));
values.add(new DataPointBar("Cosmetics", 10, c3));
values.add(new DataPointBar("Travel Products", 5, c4 ));
values.add(new DataPointBar("Government", 67, c5));
DataPointMultiBar mb1 = new DataPointMultiBar(values, "2007", MultiBarMode.STACK_ON_TOP);
multiBarList.add(mb1);
ArrayList<DataPointBar> values2 = new ArrayList<DataPointBar>();
values2.add(new DataPointBar("Automobile", 80, c1));
values2.add(new DataPointBar("Food Industry", 45, c2));
values2.add(new DataPointBar("Cosmetics", 12, c3));
values2.add(new DataPointBar("Travel Products", 14, c4));
values2.add(new DataPointBar("Government", 10, c5));
DataPointMultiBar mb2 = new DataPointMultiBar(values2, "2008", MultiBarMode.STACK_ON_TOP);
multiBarList.add(mb2);
ArrayList<DataPointBar> values3 = new ArrayList<DataPointBar>();
values3.add(new DataPointBar("Automobile", 5, c1));
values3.add(new DataPointBar("Food Industry", 4, c2 ));
values3.add(new DataPointBar("Cosmetics", 3, c3));
values3.add(new DataPointBar("Travel Products", 1, c4));
values3.add(new DataPointBar("Government", 2, c5));
DataPointMultiBar mb3 = new DataPointMultiBar(values3, "2009", MultiBarMode.STACK_ON_TOP);
multiBarList.add(mb3);
ArrayList<XYDataSeries> xySeriesList = new ArrayList<XYDataSeries>();
XYDataSeries series = new XYDataSeries(multiBarList, new UIPointMultiBarStacked(80),
null, "1994");
xySeriesList.add(series);
XYChart chart = new XYChart("Stacked", "Year", "y", xySeriesList);
chart.rightOffset = 200;