关于MPAndroidChart中的RadarChart自定义x轴标签颜色

本文讲述了在使用MPAndroidChart库绘制雷达图时,如何自定义X轴标签的颜色。作者通过重写IAxisValueFormatter和XAxisRendererRadarChart,实现了每个标签不同颜色的效果,详细介绍了实现过程和代码示例。
摘要由CSDN通过智能技术生成

由于最近在做实验室的项目,需要进行绘图表示相关的数据,因此用到了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轴的标签与我的选项一致,效果图如下:
重写IAxisValueFormatter方法得到的图
相关代码如下:

 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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值