MPAndroidChart蜘蛛网雷达图

关于MPAndroidChart(开源地址)就不多说了,是一个开源的android图表库,包含折线图、柱状图、散点图、雷达图等等。最近项目需要使用雷达图、折线图,为了可以清晰的表达出每个维度的数据偏好,非常直观,决定采用MPAndroidChart这个开源库实现。

现将MPAndroidChart的简单实用总结如下:

1、如何接入:

在工程的build.gradle文件中引用

allprojects{ repositories { maven { url'https://jitpack.io'} }}

在App的build.gradle

dependencies{ implementation'com.github.PhilJay:MPAndroidChart:v3.0.3'}

然后进行同步,Android Studio会自动完成依赖

2、使用:

雷达图是RadarChart这个控件,我们需要先在layout中使用这个自定义控件,如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <com.github.mikephil.charting.charts.RadarChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
</RelativeLayout>

在Activity代码中获取资源id

RadarChart chart = findViewById(R.id.chart);
private void chartBanding() {
        chart.getDescription().setEnabled(false);

        chart.setWebLineWidth(1f);
        chart.setWebColor(Color.LTGRAY);
        chart.setWebLineWidthInner(1f);
        chart.setWebColorInner(Color.LTGRAY);
        chart.setWebAlpha(100);
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        chart.setLayoutParams(layoutParams);
        chart.setRotationEnabled(false);

        setData();

        chart.animateXY(//设置绘制动画
                1400, 1400,
                Easing.EasingOption.EaseInOutQuad,
                Easing.EasingOption.EaseInOutQuad);

        XAxis xAxis = chart.getXAxis();
        xAxis.setTextSize(12f);
        xAxis.setYOffset(0f);
        xAxis.setXOffset(0f);
        xAxis.setAxisMinValue(1f);
        xAxis.setValueFormatter(new IAxisValueFormatter() {

            private String[] mActivities = new String[]{"一血", "双杀", "三杀", "四杀", "五杀"};//设置雷达图普

            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return mActivities[(int) value % mActivities.length];
            }
        });
        xAxis.setTextColor(UIUtils.getColor(R.color.c2a2e3d));

        YAxis yAxis = chart.getYAxis();
        yAxis.setLabelCount(1, false);
        yAxis.setTextSize(12f);
        yAxis.setAxisMinimum(0f);
        yAxis.setAxisMaximum(80f);
        yAxis.setDrawLabels(false);

        Legend l = chart.getLegend();//得到图例
        l.setEnabled(false);//隐藏图例
    }
private void setData() {//设置数据
        float mult = 100;
        float min = 20;
        //项目数
        int cnt = 5;

        ArrayList<RadarEntry> entries1 = new ArrayList<RadarEntry>();
        ArrayList<RadarEntry> entries2 = new ArrayList<RadarEntry>();

        // NOTE: The order of the entries when being added to the entries array determines their position around the center of
        // the chart.
        for (int i = 0; i < cnt; i++) {
            float val1 = (float) (Math.random() * mult) + min;
            entries1.add(new RadarEntry(val1));

            float val2 = (float) (Math.random() * mult) + min;
            entries2.add(new RadarEntry(val2));
        }
        //set1为一级图层、set2为二级图层
        RadarDataSet set1 = new RadarDataSet(entries1, "");
        set1.setColor(UIUtils.getColor(R.color.c91BBF8));
        set1.setFillColor(UIUtils.getColor(R.color.c91BBF8));//一级图层填充色
        set1.setDrawFilled(true);
        set1.setFillAlpha(180);
        set1.setLineWidth(2f);
        set1.setDrawHighlightCircleEnabled(true);
        set1.setDrawHighlightIndicators(false);

        RadarDataSet set2 = new RadarDataSet(entries2, "");
        set2.setColor(UIUtils.getColor(R.color.ceaba39));
        set2.setFillColor(UIUtils.getColor(R.color.ceaba39));//二级图层填充色
        set2.setDrawFilled(true);
        set2.setFillAlpha(180);
        set2.setLineWidth(2f);
        set2.setDrawHighlightCircleEnabled(true);
        set2.setDrawHighlightIndicators(false);

        ArrayList<IRadarDataSet> sets = new ArrayList<IRadarDataSet>();
        sets.add(set2);
        sets.add(set1);

        RadarData data = new RadarData(sets);
//        data.setValueTypeface(mTfLight);
        data.setValueTextSize(8f);
        data.setDrawValues(false);
        data.setValueTextColor(Color.WHITE);

        chart.setData(data);
        chart.invalidate();
    }
以上就为雷达图实现的代码,写的不是很完整,还请各位大神多多指教!!!!




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值