在 MPAndroidChart 中自定义 Legend

customize Legend in MPAndroidChart

我在项目中工作,需要实现图表,我决定使用 MPAndroidChart 它的工作很好,但我需要做一些事情来完美地满足我

首先我可以将条形图更改为特定图像还是只需要图像,因为我在应用程序设计中将 3D 图像作为条形图。

第二个我可以像下图一样将图例放在图表右侧的两行中,然后更改图例文本颜色

我的java代码

mChart = (BarChart) view.findViewById(R.id.chart);
        mChart.setDescription("");
        Legend mLegend = mChart.getLegend();
        //mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER);
FillBarChart(mChart);
}


private void FillBarChart(BarChart barChart) {
        ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(87f, 0));
        entries.add(new BarEntry(90f, 1));


        ArrayList<String> labels = new ArrayList<>();
        labels.add("Omeprazole 20 mg");
        labels.add("Esomeprazole 40 mg");

        BarDataSet dataSet = new BarDataSet(entries, " ");
        dataSet.setBarSpacePercent(40f);
        BarData barData = new BarData(labels, dataSet);
        dataSet.setColors(new int[]{R.color.omeprazole_color , R.color.esomeprazole_color} , getActivity());
        barChart.setData(barData);
        barChart.animateY(3000 , Easing.EasingOption.EaseOutBack );
    }

如果您创建自定义 Chart class 并覆盖 init(),就可以做到这一点。 在此方法中,图表初始化一个 LegendRenderer,这是您需要进入并进行更改的点。

创建自定义 LegendRenderer 并确保所有可绘制对象的所有测量值都已到位。 drawForm() 方法将允许您绘制图像而不是默认形式(圆形、方形、直线)。