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;