Получение ошибок в данных PieData = новые PieData (метки, набор данных); при добавлении данных

2 Prathmesh Patil [2016-07-13 09:14:00]

В моем приложении нужна круговая диаграмма, для которой я использую MPAndroidChart, но, получив ошибку при добавлении данных в конструктор Piedata, пожалуйста, помогите. Использование зависимости compile 'com.github.PhilJay: MPAndroidChart: v3.0.0 beta'

 imageView=(PieChart) v.findViewById(R.id.result_text);
    ArrayList<Entry> entries = new ArrayList<>();
    entries.add(new Entry(4f, 0));
    entries.add(new Entry(8f, 1));
    entries.add(new Entry(6f, 2));
    entries.add(new Entry(12f, 3));
    entries.add(new Entry(18f, 4));
    entries.add(new Entry(9f, 5));
    PieDataSet dataset = new PieDataSet(entries,"uyggh");
    ArrayList<Object> labels = new ArrayList<Object>();
    labels.add("January");
    labels.add("February");
    labels.add("March");
    labels.add("April");
    labels.add("May");
    labels.add("June");
    PieData data = new PieData(labels, dataset);//getting error here
    imageView.setData(data);
    imageView.setDescription("Description");

android graph charts mpandroidchart


5 ответов


2 Решение Dhruv [2016-07-13 12:39:00]

PieData принимает только один аргумент, и это PieDataSet. Поэтому замените

PieData data = new PieData(labels, dataset);

с

PieData data = new PieData(dataset);

Для получения дополнительной информации вы можете проверить этот официальный пример.

Надеюсь, этот ответ вам поможет.


3 Apoorva Jain [2018-03-14 13:08:00]

В соответствии с последней документацией, соответствующей com.github.PhilJay: MPAndroidChart: v3.0.3, записи (Pie Entries) теперь принимают значения x и y вместе.

List<PieEntry> entries = new ArrayList<>();

entries.add(new PieEntry(18.5f, "Green"));
entries.add(new PieEntry(26.7f, "Yellow"));
entries.add(new PieEntry(24.0f, "Red"));
entries.add(new PieEntry(30.8f, "Blue")); 

PieDataSet set = new PieDataSet(entries, "Election Results");
PieData data = new PieData(set);
pieChart.setData(data);
pieChart.invalidate(); // refresh

Поэтому вместо того, чтобы унижать depandency, используйте обновленный код.


1 Prathmesh Patil [2016-07-13 12:47:00]

Когда я использовал зависимость com.github.PhilJay: MPAndroidChart: v2.1.6 ', то PieData принимает два аргумента, то есть String и PieDataSet. Итак, я думаю, что это проблема с обновлением зависимостей. Используя низкую зависимость, она может быть решена.


0 Mohamed Aymen AFIA [2016-11-20 23:12:00]

Вы должны передавать метки в методе PieEntry, как это. меня устраивает

private  float[] yData = {25.3f,10.3f,66.3f,44.3f,16.3f,46.3f,23.3f};
private  String[] xData = {"med","hamza","mohammed","","","",""};

    for(int i = 0 ; i <yData.length;i++){
        yEntrys.add(new PieEntry(yData[i],xData[i % xData.length]));

}

это мой код, он работает на 100% с compile 'com.github.PhilJay:MPAndroidChart:v3.0.1' Но более высокие версии Gradle использования implementation вместо compile

public class Main2Activity extends AppCompatActivity {
   private  static  String TAG = "MainActivit";
private  float[] yData = {25.3f,10.3f,66.3f,44.3f,16.3f,46.3f,23.3f};
    private  String[] xData = {"med","hamza","mohammed","","","",""};

PieChart pieChart;

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

        Log.d(TAG, "Beach chart");


        pieChart = (PieChart) findViewById(R.id.idPieChart);
        //pieChart.setDescription(" Sales by employee In thousands $");
        pieChart.setRotationEnabled(true);
        pieChart.setHoleRadius(25f);
        pieChart.setTransparentCircleAlpha(0);
        pieChart.setCenterText("super cool chart");
        pieChart.setCenterTextSize(10);
        pieChart.setDrawEntryLabels(true);

        addDataSet();


        pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, Highlight h) {
                Log.d(TAG, "onValueSelected: value selected from chart");
                Log.d(TAG, "onValueSelected: "+ e.toString());
                Log.d(TAG, "onValueSelected: "+ h.toString());
            }

            @Override
            public void onNothingSelected() {

            }
        });
    }

    private void addDataSet() {
        Log.d(TAG, "addDataSet: started");

        ArrayList<PieEntry> yEntrys = new ArrayList<>();
        ArrayList<String> xEntrys = new ArrayList<>();

        for(int i = 0 ; i <yData.length;i++){
            yEntrys.add(new PieEntry(yData[i],xData[i % xData.length]));

 }

        for(int i = 0 ; i <xData.length;i++){
            xEntrys.add(xData[i]);

        }


        //create the DATA

        PieDataSet pieDataSet = new PieDataSet(yEntrys,"Beachs");
        pieDataSet.setSliceSpace(2);
        pieDataSet.setValueTextSize(12);



        //add colors to dataSet

        ArrayList<Integer> colors = new ArrayList<>();
        colors.add(Color.GRAY);
        colors.add(Color.BLUE);
        colors.add(Color.RED);
        colors.add(Color.GREEN);
        colors.add(Color.CYAN);
        colors.add(Color.YELLOW);
        colors.add(Color.MAGENTA);

        pieDataSet.setColors(colors);

pieDataSet.setSliceSpace(25);



        //add legend to chart

        Legend legend = pieChart.getLegend();
        legend.setForm(Legend.LegendForm.CIRCLE);
        legend.setPosition(Legend.LegendPosition.LEFT_OF_CHART);


        //create a pieData object

        PieData pieData = new PieData(pieDataSet);



        pieChart.setData(pieData);

pieChart.invalidate();

    }
}

0 user1464927 [2017-08-13 21:55:00]

Ваш ArryayList <> должен быть с String, а не с Object:

ArrayList<String> labels = new ArrayList<String>();
....
PieData data = new PieData(labels, dataset);//getting error here

Поскольку новый PieData нужен ArrayList << String >>