J'ai créé une tarte et un tableau de ligne en utilisant MPANDROIDCHART .

Tableau de tarte Entrez la description de l'image ici

Code

getEntries();
    pieDataSet = new PieDataSet(pieEntries, "");
    pieDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
    pieDataSet.setSliceSpace(2f);
    pieDataSet.setValueTextColor(Color.BLACK);
    pieDataSet.setValueTextSize(10f);
    pieDataSet.setSliceSpace(5f);
    pieData = new PieData(pieDataSet);
    pieChart.getDescription().setEnabled(false);
    pieChart.getLegend().setEnabled(false);
    pieChart.setCenterText("Last Two Months Sale" );
    pieChart.setCenterTextSize(14f);
    pieChart.setCenterTextColor(Color.BLUE);
    pieChart.animateX(1500);
    pieChart.setData(pieData);

  public void getEntries() {
    pieEntries = new ArrayList<>();
    pieEntries.add(new PieEntry(200,"March", 0));
    pieEntries.add(new PieEntry(300, "April",1));

}

Tableau de ligne

enter image description here

Code

 private ArrayList<Entry> lineChartDataSet(){
    ArrayList<Entry> dataSet = new ArrayList<Entry>();

    dataSet.add(new Entry(1,200));
    dataSet.add(new Entry(2,300));
    dataSet.add(new Entry(3,500));
    return  dataSet;


}
lineDataSet = new LineDataSet(lineChartDataSet(),"data set");
    lineDataSet.setLineWidth(1.75f);
    lineDataSet.setCircleRadius(5f);
    lineDataSet.setCircleHoleRadius(2.5f);
 iLineDataSets.add(lineDataSet);
    lineData = new LineData(iLineDataSets);
 lineChart.setNoDataText("Data not Available");
    lineChart.getDescription().setEnabled(false);
    lineChart.getLegend().setEnabled(false);
    lineDataSet.setColors(color);
    lineChart.setTouchEnabled(true);
    lineChart.setDragEnabled(true);
    lineDataSet.setCircleColor(Color.parseColor("#891e9a"));
    lineDataSet.setCircleHoleColor(Color.parseColor("#891e9a"));
    lineDataSet.setDrawHighlightIndicators(false);
    lineDataSet.setDrawCircles(true);
    lineDataSet.setDrawCircleHole(true);
    lineDataSet.setLineWidth(5);
    lineDataSet.setCircleRadius(5);
    lineDataSet.setCircleHoleRadius(5);
    lineDataSet.setValueTextSize(10);
    lineDataSet.setValueTextColor(Color.BLACK);
    lineChart.setPinchZoom(false);
 lineChart.getAxisLeft().setSpaceTop(40);
    lineChart.getAxisLeft().setSpaceBottom(40);
    XAxis xAxis = lineChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawGridLines(false);
 xAxis.setValueFormatter(new IndexAxisValueFormatter(xAxisLabel));
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);
lineChart.getAxisRight().setEnabled(false);
 lineChart.setData(lineData);
    lineChart.invalidate();

Les deux graphiques affichent mais je souhaite modifier le format de la valeur. Dans les deux graphiques Pie} et Line, on ne peut que ajouter des valeurs floating. Mais je veux ajouter des chaînes.

Exemple

Je veux faire ce qui suit

pieEntries.add(new PieEntry(200,"March", 0));

Remplacer par

pieEntries.add(new PieEntry("200K","March", 0));

Et

 dataSet.add(new Entry(1,200));

Remplacer par

 dataSet.add(new Entry(1,"200K"));

Comment puis-je y arriver?

Toute aide serait très appréciée.

0
Moeez 1 mai 2021 à 20:46

1 réponse

Meilleure réponse

Vous pouvez utiliser ValueFormatter. Créez ValueFormatter puis définissez-le sur la Piedata

ValueFormatter formatter = new ValueFormatter() {
    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return ((int) value) + " " + "K";
    }
};
pieData.setValueFormatter(formatter);

Si vous utilisez LargeValueFormatter, il tourne automatiquement des valeurs telles que "1.000" en "1k", "1.000.000" dans "1M" (Million) par ex. Pour utiliser LargeValueFormatter, définissez-le sur Piedata.

pieData.setValueFormatter(new LargeValueFormatter())

Voir aussi https://github.com/philjay/mpandroidrkart/wiki/the- Valueformatter-Interface

2
Shams 4 mai 2021 à 13:10