MPAndroidChart3使用详解8:RadarChart(雷达图)顶角显示圆点——额外设置一组顶点值数据方案

    xiaoxiao2022-07-03  178

    目录

     

    1 实现:

    2 效果:


    1 实现:

    Step 1:分别新建5个shape资源文件。

    Step 2:内容如下,根据个人需求更改颜色、半径、尺寸。

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--图形颜色--> <solid android:color="#36a9ce"/> <!--图形半径--> <corners android:radius="6dp"/> <!--图形尺寸--> <size android:width="12dp" android:height="12dp"/> </shape>

    Step 3:添加一组顶点值数据,如顶点值为100,则这组数据的所有值都为100,然后为每个数组设置一个图标(前面创建的shape资源文件),再将数据间的连线隐藏掉且不绘制数据值。

    /** * 创建一组虚拟图表数据 * @return */ private RadarDataSet drawAngleCircle() { List<RadarEntry> yVals = new ArrayList<>(); // 各个顶点的图标资源 int[] drawables = new int[]{ R.drawable.shape_circle_1, R.drawable.shape_circle_2, R.drawable.shape_circle_3, R.drawable.shape_circle_4, R.drawable.shape_circle_5, }; for (int i = 0; i < 5; i++) { RadarEntry radarEntry = new RadarEntry(100f); radarEntry.setIcon(getResources().getDrawable(drawables[i])); // 为每个数据设置一个图标 yVals.add(radarEntry); } RadarDataSet ds = new RadarDataSet(yVals, ""); ds.setColors(Color.TRANSPARENT); // 不显示数据连线 ds.setDrawValues(false); // 不绘制数据值 return ds; }

    2 效果:

    特别注意:这种方式比较简单,但如果辅助绘制圆点的数据控制不好的话,圆点位置比较容易失控,如果对于精准性要求较高的话最好采用“重写RadarChart控件添加顶角圆点绘制方案”。

    那如何合理控制辅助绘制的圆点呢?

    1.把控数据最大值作为顶角,比如这里所有数据的最大取值为100,否则圆点位置会绘制到图表内部。

    yAxis.setAxisMaximum(80f); // 为什么是80不是100呢,可以试一下100就知道它是不是有自己的想法

    2.保证图表中心点是从0开始,否则圆点位置会绘制到图表外部。

    yAxis.setAxisMinimum(0f);

    或者可以再加一组辅助的假数据,所有值都为0,就可以保证从0开始绘制也看不见。

    List<RadarEntry> yVals = new ArrayList<>(); for (int i = 0; i < 5; i++) { yVals.add(new RadarEntry(0)); } RadarDataSet ds = new RadarDataSet(yVals, lable); ds.setDrawValues(false); dataSets.add(ds);

    如果不是将圆点绘制在图表的顶点,而是想绘制到每个真实数据值的顶点,把绘制圆点的那组数据值保持与真实数据顶点的值一致即可。

    雷达图的使用教程:https://blog.csdn.net/Honiler/article/details/90407390

    最新回复(0)