Search code examples
androidshinobi

Android - set other color for each data point in BarSeries (shinobicharts)


I trying use shinobicharts to design like as this chart:

http://www.upsieutoc.com/images/2014/04/19/barseries.png

BarSeries

I used BarSeries, and i having a few problem following:

  • i can't found function to set data on each DataPoint (20, 25, 30).

  • i want set other color for each data point like in the image above. (red, green, purple)

  • right align for label. (France, Malaysia, Spain).

And this code:

 ChartFragment chartFragment = (ChartFragment) getFragmentManager().findFragmentById(R.id.chart);
  ShinobiChart shinobiChart = chartFragment.getShinobiChart();

   NumberAxis xAxis = new NumberAxis();
    xAxis.setPosition(Position.REVERSE);
    shinobiChart.addXAxis(xAxis);
    CategoryAxis yAxis = new CategoryAxis();
    shinobiChart.addYAxis(yAxis);
    BarSeries series = new BarSeries();
    series.setTitle("Country");
    DataAdapter<Integer, String> adapter = new SimpleDataAdapter<Integer, String>(); 

     adapter.add(new DataPoint<Integer, String>(20, "Spain"));
     adapter.add(new DataPoint<Integer, String>(25, "Malaysia"));
     adapter.add(new DataPoint<Integer, String>(30, "France"));

    series.setDataAdapter(adapter);
    shinobiChart.addSeries(series);

Please help me!


Solution

  • Apparently you can't.

    The solution is to have 3 series with one value each, rather than one series with 3 values. E.g.:

    ChartFragment chartFragment = (ChartFragment) getFragmentManager().findFragmentById(R.id.chart);
      ShinobiChart shinobiChart = chartFragment.getShinobiChart();
       NumberAxis xAxis = new NumberAxis();
        xAxis.setPosition(Position.REVERSE);
        shinobiChart.addXAxis(xAxis);
        CategoryAxis yAxis = new CategoryAxis();
        shinobiChart.addYAxis(yAxis);
    
        BarSeries series1 = new BarSeries();
        series1.setTitle("Country");
        BarSeriesStyle bss1 = series1.getStyle();
        bss1.setAreaColor(Color.RED);
        DataAdapter<Integer, String> adapter = new SimpleDataAdapter<Integer, String>(); 
        adapter.add(new DataPoint<Integer, String>(20, "Spain"));
        series1.setDataAdapter(adapter);
        shinobiChart.addSeries(series1);
    
        BarSeries series2 = new BarSeries();
        series2.setTitle("Country");
        BarSeriesStyle bss2 = series2.getStyle();
        bss2.setAreaColor(Color.GREEN);
        DataAdapter<Integer, String> adapter = new SimpleDataAdapter<Integer, String>(); 
        adapter.add(new DataPoint<Integer, String>(25, "Malaysia"));
        series2.setDataAdapter(adapter);
        shinobiChart.addSeries(series2);
    
        BarSeries series3 = new BarSeries();
        series3.setTitle("Country");
        BarSeriesStyle bs3 = series3.getStyle();
        bss3.setAreaColor(Color.BLUE);
        DataAdapter<Integer, String> adapter = new SimpleDataAdapter<Integer, String>(); 
        adapter.add(new DataPoint<Integer, String>(30, "France"));
        series3.setDataAdapter(adapter);
        shinobiChart.addSeries(series3);