MPAndroidChart3使用详解7:RadarChart(雷达图)

1 简述

2 使用
Step 1:在布局文件(.xml)中添加雷达图控件

<com.github.mikephil.charting.charts.RadarChart
    android:id="@+id/rc"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>


Step 2:声明控件

private RadarChart rc;


Step 3:获取控件

rc = findViewById(R.id.rc);


3 设置数据
代码

    /**
     * 设置图表数据
     */
    private void setChartData2_2() {
        /* RadarData的无参构造方法 */
//        RadarData data = new RadarData();
//        data.addDataSet(creatingData("学习驾驶人不按指定时间上盗录学习驾驶的"));
//        data.addDataSet(creatingData("拖拉机驶入大中城市中心城区内道路的"));
        /* RadarData的不限参数的构造方法 */
//        RadarData data = new RadarData(
//                creatingData("驾驶摩托车在车把上悬挂物品的"),
//                creatingData("拖拉机驶入大中城市中心城区内道路的"),
//                creatingData("拖拉机违法规定载人的"),
//                creatingData("拖拉机牵引多辆挂车的"),
//                creatingData("学习驾驶人不按指定时间上盗录学习驾驶的")
//        );
        /* RadarData的List类型参数的构造方法 */
        List<IRadarDataSet> dataSets = new ArrayList<>();
        dataSets.add(creatingData("驾驶摩托车在车把上悬挂物品的"));
        dataSets.add(creatingData("拖拉机驶入大中城市中心城区内道路的"));
        dataSets.add(creatingData("拖拉机违法规定载人的"));
        dataSets.add(creatingData("拖拉机牵引多辆挂车的"));
        dataSets.add(creatingData("学习驾驶人不按指定时间上盗录学习驾驶的"));
        RadarData data = new RadarData(dataSets);
 
        rc.setData(data);
    }
 
    /**
     * 创建虚拟图表数据
     * @param lable 数据标签
     * @return
     */
    private RadarDataSet creatingData(String lable) {
        List<RadarEntry> yVals = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            yVals.add(new RadarEntry((float) (Math.random() * 100))); // 生成1-100的随机数
        }
        RadarDataSet ds = new RadarDataSet(yVals, lable);
        return ds;
    }
  • 效果

 

3 图表的渲染与定制

3.1 为每组数据设置不同的颜色

  • 代码
    /**
     * 设置图表数据
     */
    private void setChartData2_3_1() {
        List<IRadarDataSet> dataSets = new ArrayList<>();
        dataSets.add(creatingData("驾驶摩托车在车把上悬挂物品的", Color.parseColor("#36a9ce")));
        dataSets.add(creatingData("拖拉机驶入大中城市中心城区内道路的", Color.parseColor("#33ff66")));
        dataSets.add(creatingData("拖拉机违法规定载人的", Color.parseColor("#ef5aa1")));
        dataSets.add(creatingData("拖拉机牵引多辆挂车的", Color.parseColor("#ff0000")));
        dataSets.add(creatingData("学习驾驶人不按指定时间上盗录学习驾驶的", Color.parseColor("#6600ff")));
        RadarData data = new RadarData(dataSets);
        rc.setData(data);
    }
 
    /**
     * 创建一组虚拟图表数据
     * @param lable 标签
     * @param color 颜色
     * @return
     */
    private RadarDataSet creatingData(String lable, int color) {
        RadarDataSet ds = creatingData(lable);
        ds.setColor(color);
//        ds.setColor(color, 102); // 第二个参数(alpha)设置颜色的透明度
        ds.setDrawFilled(true); // 绘制填充,默认为false
        ds.setFillColor(color); // 填充颜色
        ds.setFillAlpha(51); // 填充内容透明度
        return ds;
    }
  • 效果

 

 

3.2 不显示图表顶点的标签(label)

  • 代码
 
XAxis xAxis = rc.getXAxis();

xAxis.setDrawLabels(false);
  • 效果

3.3 不显示每组数据值标签(label)

  • 代码
ds.setDrawValues(false); // 指定那组数据(RadarDataSet对象)不显示标签
  • 效果

 

3.4 Y轴固定最大值

  • 代码
 
YAxis yAxis = rc.getYAxis();

yAxis.setAxisMaximum(80f); // 要达到100需要把该值设为80,至于原因可以试着向下调小和向上调大看看效果就
  • 效果

 

3.5 点击某个顶点高亮显示的样式

  • 代码

 

s.setHighLightColor(Color.RED); // 高亮线条颜色
ds.setHighlightLineWidth(1f); // 高亮线条宽度
ds.setDrawHighlightCircleEnabled(true);  // 是否绘制高亮显示器焦点中心的点,默认为false
ds.setHighlightCircleFillColor(color); // 高亮显示器焦点中心的圆颜色
ds.setHighlightCircleInnerRadius(4f); // 高亮显示器焦点中心的点内圆半径
ds.setHighlightCircleOuterRadius(6f); // 高亮显示器焦点中心的点外圆半径
ds.setHighlightCircleStrokeColor(color); // 高亮显示器焦点中心的点边(光晕效果)颜色
ds.setHighlightCircleStrokeAlpha(102); // 高亮显示器焦点中心的点边(光晕效果)透明度
ds.setHighlightCircleStrokeWidth(6f); // 高亮显示器焦点中心的点边(光晕效果)宽度
// ds.setDrawHorizontalHighlightIndicator(false); // 是否绘制高亮水平线,默认为true
// ds.setDrawVerticalHighlightIndicator(false); // 是否绘制高亮垂直线,默认为true
  • 效果

3.6 取消点击某个顶点高亮显示的效果
代码

ds.setHighlightEnabled(false); // 是否绘制高亮效果,默认为true
// ds.setDrawHighlightIndicators(false); // 是否绘制高亮显示器,默认为true


3.7 图表顶角显示不同颜色的小圆点
实现(两套方案)
① 额外设置一组顶点值数据:

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

② 重写RadarChart控件添加顶角圆点绘制:

MPAndroidChart3使用详解9:RadarChart(雷达图)顶角显示圆点——重写RadarChart控件添加顶角圆点绘制方案_Honiler的博客-CSDN博客

效果

————————————————
版权声明:本文为CSDN博主「Homilier」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Honiler/article/details/90407390

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MPAndroidChart是一款功能强大的Android图表库,它支持多种类型的图表,如折线图、柱状图、饼图、散点图等,并且可以进行多种自定义设置和交互操作。以下是MPAndroidChart使用详解: 1. 导入库 在项目的build.gradle文件中添加以下依赖: ``` dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' } ``` 2. 添加布局 在布局文件中添加一个空的布局,用于显示图表: ``` <LinearLayout android:id="@+id/chart_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" /> ``` 3. 初始化图表 在代码中获取布局并初始化图表: ``` // 获取布局 LinearLayout chartLayout = findViewById(R.id.chart_layout); // 创建图表 LineChart chart = new LineChart(this); // 添加到布局中 chartLayout.addView(chart); ``` 4. 设置数据 设置图表的数据源: ``` List<Entry> entries = new ArrayList<>(); entries.add(new Entry(0, 2)); entries.add(new Entry(1, 4)); entries.add(new Entry(2, 6)); entries.add(new Entry(3, 8)); entries.add(new Entry(4, 10)); LineDataSet dataSet = new LineDataSet(entries, "Label"); LineData lineData = new LineData(dataSet); chart.setData(lineData); ``` 5. 自定义样式 可以对图表进行多种自定义设置,如图例、坐标轴、标签等: ``` // 设置图例 Legend legend = chart.getLegend(); legend.setEnabled(false); // 设置X轴 XAxis xAxis = chart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); // 设置Y轴 YAxis yAxis = chart.getAxisLeft(); yAxis.setAxisMinimum(0f); yAxis.setAxisMaximum(12f); yAxis.setGranularity(1f); yAxis.setValueFormatter(new ValueFormatter() { @Override public String getFormattedValue(float value) { return String.valueOf((int) value); } }); // 设置标签 chart.getDescription().setEnabled(false); ``` 6. 添加交互操作 可以为图表添加多种交互操作,如缩放、拖动等: ``` // 缩放 chart.setScaleEnabled(true); chart.setPinchZoom(true); // 拖动 chart.setDragEnabled(true); ``` 以上就是MPAndroidChart使用详解,希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值