Radius of Doughnut chart in AchartEngine

吃可爱长大的小学妹 提交于 2019-12-02 03:30:31

问题


I m trying to set doughnut chart inner circle radius and outter circle radius in aChartengine, below is my code :

public class MainActivity extends Activity {
    GraphicalView gv;
    RelativeLayout rl;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        List<double[]> values1 = new ArrayList<double[]>();

        values1.add(new double[] { 15, 5 });


        gv = createIntent(values1);

        rl = (RelativeLayout) findViewById(R.id.rel);
        rl.addView(gv);    
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public GraphicalView createIntent(List<double[]> values1) {

        List<String[]> titles = new ArrayList<String[]>();

        titles.add(new String[] { " ", " " });
        int[] colors = new int[] { Color.BLUE, Color.GREEN };

        DefaultRenderer renderer = buildCategoryRenderer(colors);
        renderer.setApplyBackgroundColor(true);
        renderer.setShowLegend(false);

        renderer.setShowLabels(false);
        renderer.setStartAngle(270);
        renderer.setBackgroundColor(Color.rgb(222, 222, 200));
        renderer.setLabelsColor(Color.GRAY);



        return ChartFactory.getDoughnutChartView(MainActivity.this,
                buildMultipleCategoryDataset("Project budget", titles, values1),
                renderer);
    }

    protected MultipleCategorySeries buildMultipleCategoryDataset(String title,
            List<String[]> titles, List<double[]> values) {
        MultipleCategorySeries series = new MultipleCategorySeries(title);
        int k = 0;
        for (double[] value : values) {
            series.add(2007 + k + "", titles.get(k), value);
            k++;
        }
        return series;
    }

    protected DefaultRenderer buildCategoryRenderer(int[] colors) {
        DefaultRenderer renderer = new DefaultRenderer();
        renderer.setLabelsTextSize(15);
        renderer.setLegendTextSize(15);
        renderer.setMargins(new int[] { 20, 30, 15, 0 });
        for (int color : colors) {
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(color);
            renderer.addSeriesRenderer(r);
        }
        return renderer;
    }

But I have browser this query of setting radius , in many search I have found radius on canvas but in my case I don't have canvas.

Can anyone tell me how to set radius here in my code ?


回答1:


renderer.setScale((flaot)1.3) solved my problem but the inner and outer radius is approx not prefect.




回答2:


You have to just chage value of decCoef (variable in DoughnutChart class). In DefaultRenderer add your own radius variable and create getter and setter. now, use this variable in DoughnutChart.

for example ,

 DefaultRenderer defaultRenderer = new DefaultRenderer();
defaultRenderer.setmWidth(0.1f);

In DoughnutChart class :

public class DoughnutChart extends RoundChart {
    private float mWidth; // make your own variable and initialize in constructor 

    public DoughnutChart(MultipleCategorySeries dataset, DefaultRenderer renderer) {
       super(null, renderer);
        mDataset = dataset;
        mWidth = renderer.getmWidth();
   }
   double decCoef =  mWidth / cLength; // change value of decCoef by using our variable. 


来源:https://stackoverflow.com/questions/23749304/radius-of-doughnut-chart-in-achartengine

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!