繁体   English   中英

如何使用AChartEngine在一个活动中显示两个饼图并在图表中显示我自己的数据

[英]How to use AChartEngine to display two pie graphs in one activity AND displaying my own data in the charts

我对achartengine非常陌生(通常是Java / Android编程),但是我需要它在一个活动中显示两个饼图。 我可以通过调用以下代码来使其工作,但是现在我想知道如何显示我先前在活动中设置的数据。 每个图表必须拥有自己的数据(自己的字符串数组)

我的主要活动onCreate

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rezultati);

        ...


        db.open();
        //here I get the values, which are then stored in test1, test2 and test3 for graph 1
        //I also get the values for graph 2, which are called test4, test5 and test6
        db.close();

        //Now I'd like to assign those 'test' values to the pie chart

这是我的PieGraph类,与我的活动位于同一个.java文件中

public class PieGraph{
     public GraphicalView getView(Context context) {

        int[] values; //I'd like to place my values for the first graph here, display the 1st graph and then do the same with the second

        CategorySeries series = new CategorySeries("Pie Graph");
        //I also need to replace my 'series' to "test1", "test2" and "test3" for the 1st graph
        //and "test4", "test5" and "test6 for the 2nd graph

        int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.RED };

        DefaultRenderer renderer = new DefaultRenderer();
        for (int color : colors) {
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(color);
            renderer.addSeriesRenderer(r);
        }

        renderer.setZoomButtonsVisible(false);
        renderer.setPanEnabled(false);
        renderer.setDisplayValues(true);
        renderer.setLabelsTextSize(35);
        renderer.setShowLegend(false);

        return ChartFactory.getPieChartView(context, series, renderer);
    }
}

我现在需要一种方法,该方法将获取给定的“测试”值,将其放入图形中并在布局中输出两个图形(我已经在.xml中为图形添加了两个LinearLayouts)。

您可以使用以下类似方法进行操作。 但是,请确保在调用此方法之前,已填充作为自定义对象数组的“ arrProducts”。 自定义对象类具有用于“唯一调用”“特殊”的 get和set方法。 我已经将字符串形式的uniqueCalls转换为布尔值。

ArrayList<CustomObjectClass> arrProducts;

public void PieChart() {
            try {
                String uniqueCalls;
                String specialtyName;

                CategorySeries series = new CategorySeries(" Pie Chart");
                for (int i = 0; i < arrProducts.size(); i++) {
                    uniqueCalls = arrProducts.get(i).getUniqueCalls();
                    specialtyName = arrProducts.get(i).getSpecialtyName();
                    double db = Double.parseDouble(uniqueCalls);
                    Log.v("******", "String : " + uniqueCalls + " Double: " + db);
                    series.add(specialtyName, db);
                }
                // Color of each Pie Chart Sections
                int[] colors = { Color.rgb(169, 169, 169), Color.rgb(255, 165, 0),
                        Color.rgb(128, 128, 128), Color.rgb(255, 160, 122),
                         R.color.BabyBlue,
                        R.color.BashfulPink, R.color.BasketBallOrange,
                        R.color.Chocolate,R.color.Khaki, R.color.LimeGreen,  R.color.Maroon, };

                // Instantiating a renderer for the Pie Chart
                DefaultRenderer defaultRenderer = new DefaultRenderer();

                for (int i = 0; i < arrProducts.size(); i++) {
                    specialtyName = arrProducts.get(i).getSpecialtyName();
                    SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
                    seriesRenderer.setColor(colors[i]);

                    seriesRenderer.setDisplayChartValues(true);
                    // Adding a renderer for a slice
                    defaultRenderer.addSeriesRenderer(seriesRenderer);
                }

                // defaultRenderer.setChartTitle("Product Wise Calling");
                defaultRenderer.setChartTitleTextSize(20);
                defaultRenderer.setZoomButtonsVisible(true);
                // defaultRenderer.setBackgroundColor(Color.GRAY);
                defaultRenderer.setLabelsColor(Color.BLACK);
                defaultRenderer.setDisplayValues(true);
                defaultRenderer.setClickEnabled(true);
                defaultRenderer.setSelectableBuffer(10);

                LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);

                // Creating a Line Chart
                mChartView = ChartFactory.getPieChartView(getBaseContext(), series,
                        defaultRenderer);

                // Adding the Line Chart to the LinearLayout
                chartContainer.addView(mChartView);

                mChartView.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        SeriesSelection seriesSelection = mChartView
                                .getCurrentSeriesAndPoint();
                        if (seriesSelection == null) {
                            Toast.makeText(
                                    ChartProductCallingSpecialtyWiseActivity.this,
                                    "Please Select the Pie to see the value",
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // display information of the clicked point
                            Toast.makeText(
                                    ChartProductCallingSpecialtyWiseActivity.this,
                                    " Pie Value : " + seriesSelection.getXValue(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                });
                // ANOTHER INSTANCE EXAMPLE OF PLOTTING THE PIE CHART
                // Creating an intent to plot Pie chart using dataset and
                // multipleRenderer
                // Intent intent = ChartFactory.getPieChartIntent(getBaseContext(),
                // series, defaultRenderer, "Pie Chart");
                //
                // // Start Activity
                // startActivity(intent);
            } catch (Exception e) {

            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM