由于最近在做实验室的项目,需要进行绘图表示相关的数据,因此用到了MPAndroidChart这个出名的开源框架,具体的使用先不在这里进行赘述,后面有时间再去更新相关的各个控件的使用的方法及步骤
具体情况是:项目要使用RadarChart进行显示数据,因此进行一顿代码操作后得到的图如下:
相关代码如下:`
mRadarChart = findViewById(R.id.raderChart);
XAxis xAxis = mRadarChart.getXAxis();
YAxis yAxis = mRadarChart.getYAxis();
yAxis.setAxisMinimum(0);
List<RadarEntry> radarEntries = new ArrayList<>();
for (int i = 0; i < 4; i++) {
radarEntries.add(new RadarEntry((i+1)*10));
}
RadarDataSet dataSet = new RadarDataSet(radarEntries,"");
RadarData radarData = new RadarData(dataSet);
mRadarChart.animateXY(1000,1000);
mRadarChart.setData(radarData);
mRadarChart.invalidate();
这里就不贴出布局文件(布局文件就是一个RadarChart)以及Activity类的相关方法了,可以看到,上面的代码仅仅就是设置给RadarChart设置了数据,以及设置了X轴标签的Formatter。
这个时候我就在想,由于使用前面的BarChart以及PieChart时,我们可以用柱形图的颜色以及图例的方法来表明该项,但是RadarChart的y轴显示为点的连线,如何用颜色表示勒,而且即使用不同的颜色表示每一段的线段,那我们又如何去表示哪一段的线段表示的是哪一项勒(毕竟一条线段连接的是两个值),因此,我就还是回到了想去用图例和颜色的方法去表示哪一项。于是,我首先去重写了X轴的标签的IAxisValueFormatter函数,来显示x轴的标签与我的选项一致,效果图如下:
相关代码如下:
public class MyAxisValueFormatter implements IAxisValueFormatter {
String[] mStrings = new String[]{
"选项一", "选项二", "选项三","选项四"
};
public MyAxisValueFormatter() {
// mFormat = new DecimalFormat("###,###,###,##0.0");
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
return mStrings[(int)value];
}
}
进行到这一步,我就在想,接下来就是要设置x轴不同标签的颜色,然后再添加图例并在图的下方显示出来,就可以像BarChart或PieChart那样进行标注显示了。因此,我想要设置X轴的标签,那我就去X轴那里进行设置好了,于是,我在Activity中获得XAxis的地方,加上xAxis.setTextColor()的代码,以为就可以实现了,但是我发现setTextColor需要传入的参数是int color,也就是它只能接收一个颜色的int值,所以肯定不行;于是我又想,在我重写的MyAxisValueFormatter类中,必须要重写一个方法就是getFormattedValue(float value, AxisBase axis)方法,它带有两个参数,一个是x轴此处的值,一个是轴属性的基本类AxisBase。XAxis和YAxis都是继承AxisBase的,但是,我在AxisBase的类里面并没有发现setColor的方法,但是AxisBase又是继承ComponentBase的,因此我继续到该类里面去查找setColor的方法,因此我屁颠屁颠的到我重写的getFormattedValue(float value, AxisBase axis)的方法里加了一行代码:axis.setTextColor(VORDIPLOM_COLORS[(i