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);