Получение ошибок в данных 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 >>