MPAndroidChart使用总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010724819/article/details/88338625

  1.隐藏折线图上的数值(部分产品的需求,可能因为折线图上数据太多显得凌乱),下面是我的处理方式:

LineData data = new LineData();
for (LineDataSet barDataSet : lineDataSets) {
   data.addDataSet(barDataSet);
}
//此处设置标记数量为头名色
data.setValueTextColor(Color.argb(0, 0, 0, 0));

2.自定义Legend,也就是图表顶部的图例,我的处理方式如下:

    //自定义标签
        List<LegendEntry> legendEntries = new ArrayList<>();
        for (int i = 0; i < legMyStrings.size(); i++) {
            LegendEntry legendEntry = new LegendEntry();
            legendEntry.formColor = colors.get(i);
            legendEntry.label = legMyStrings.get(i);
            legendEntries.add(legendEntry);
        }

        l.setCustom(legendEntries);

3.自定义x轴文字,我的处理方式如下:

  //具体实现就是这行代码
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                if (value < 0) {
                    return "";
                } else {
                    //xStrings为x轴的对应文字集合
                    return xStrings.get((int) value % xStrings.size());
                }
            }
        });

4.动态添加数据集合(以线形图LineChart为例):

官方Demo的处理方式:

//            // create a data object with the data sets
//            LineData data = new LineData(set1, set2, set3, set4);

这样写基本写死了,查看API,发现构造方法如下(直接写死是对自己的不负责任,给自己和别人留坑,已经被坑太多次,所以我自己做不到):

/**
 * Data object that encapsulates all data associated with a LineChart.
 * 
 * @author Philipp Jahoda
 */
public class LineData extends BarLineScatterCandleBubbleData<ILineDataSet> {

    public LineData() {
        super();
    }

    public LineData(ILineDataSet... dataSets) {
        super(dataSets);
    }

    public LineData(List<ILineDataSet> dataSets) {
        super(dataSets);
    }
}

所以尝试直接放入Set集合,结果报转换异常:

于是选择了循环add的方式解决:

LineData data = new LineData();
for (LineDataSet barDataSet : lineDataSets) {
    data.addDataSet(barDataSet);
}

5.左Y轴展示小数,Demo中部分位置默认展示整数
 

//        leftAxis.setDrawGridLines(true);
//        leftAxis.setGranularityEnabled(true);

我们只需要将其替换成即可:

leftAxis.setDrawGridLines(true);
leftAxis.setDrawZeroLine(false);
leftAxis.setGranularityEnabled(false);

猜你喜欢

转载自blog.csdn.net/u010724819/article/details/88338625