MPAndroidChart_RadarChart雷达图的那些事

2023-11-22 04:20

本文主要是介绍MPAndroidChart_RadarChart雷达图的那些事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MPAndroidChart雷达图的那些事

MPAndroidChart攻略——RadarChart雷达图的使用。
实现自定义x轴标签颜色及雷达图基本使用详细教程。
MPAndroidChart_折线图的那些事
MPAndroidChart_饼图的那些事
MPAndroidChart_动态柱状图
MPAndroidChart_水平条形图的那些事
MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。

在最近的使用中,用到了RadarChart,也就是雷达图或者说是蜘蛛图,网上对RadarChart的介绍也并不是很多,所以这里来做一个比较详细的介绍。今天我会带给大家一些使用方法,及通过重写源码实现自定义顶点颜色的操作。如果看过我以前帖子的话,那么应该会很快上手的。好啦废话不多说,我们开始吧。

先看一下大概的效果吧。

在这里插入图片描述

是不是觉得还不错,那下面我们来看看具体代码吧。

先从布局开始吧,没什么说的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.github.mikephil.charting.charts.RadarChartandroid:id="@+id/chart"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>

然后来看代码

/*** @author Petterp on 2019/5/11* Summary:RoadarChart雷达图的使用* 邮箱:1509492795@qq.com*/
public class MainActivity extends AppCompatActivity {private RadarChart chart;private int[] colors = {Color.RED, Color.BLACK, Color.GREEN, Color.BLUE, Color.GRAY};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initChart();setData();}/*** 一些轴上的设置等等*/private void initChart() {chart = findViewById(R.id.chart);//设置web线的颜色(即就是外面包着的那个颜色)chart.setWebColorInner(Color.BLACK);//设置中心线颜色(也就是竖着的线条)chart.setWebColor(Color.BLACK);chart.setWebAlpha(50);XAxis xAxis = chart.getXAxis();//设置x轴标签字体颜色xAxis.setLabelCount(4, true);xAxis.setAxisMaximum(4f);xAxis.setAxisMinimum(0f);xAxis.setTextSize(20f);//自定义y轴标签,x轴同理xAxis.setValueFormatter(new ValueFormatter() {@Overridepublic String getFormattedValue(float value) {//这里只是自定义了标签的颜色,如果要使用自定义标签颜色,请更改布局文件为自定为RoadarCharts类chart.getXAxis().setTextColor(colors[(int) Math.abs(value % 5)]);return super.getFormattedValue(value);}});YAxis yAxis = chart.getYAxis();//设置y轴的标签个数yAxis.setLabelCount(5, true);//设置y轴从0f开始yAxis.setAxisMinimum(0f);/*启用绘制Y轴顶点标签,这个是最新添加的功能* */yAxis.setDrawTopYLabelEntry(false);//设置字体大小yAxis.setTextSize(15f);//设置字体颜色yAxis.setTextColor(Color.RED);//启用线条,如果禁用,则无任何线条chart.setDrawWeb(true);//禁用图例和图表描述chart.getDescription().setEnabled(false);chart.getLegend().setEnabled(false);}/*** 设置数据*/private void setData() {List<RadarEntry> list = new ArrayList<>();for (int i = 0; i < 5; i++) {list.add(new RadarEntry((float) (Math.random() * 100)));}RadarDataSet set = new RadarDataSet(list, "Petterp");//禁用标签set.setDrawValues(false);//设置填充颜色set.setFillColor(Color.BLUE);//设置填充透明度set.setFillAlpha(40);//设置启用填充set.setDrawFilled(true);//设置点击之后标签是否显示圆形外围set.setDrawHighlightCircleEnabled(true);//设置点击之后标签圆形外围的颜色set.setHighlightCircleFillColor(Color.RED);//设置点击之后标签圆形外围的透明度set.setHighlightCircleStrokeAlpha(40);//设置点击之后标签圆形外围的半径set.setHighlightCircleInnerRadius(20f);//设置点击之后标签圆形外围内圆的半径set.setHighlightCircleOuterRadius(10f);RadarData data = new RadarData(set);chart.setData(data);chart.invalidate();}}

相应的注释也都在上面,很详细。

这里我们重点提一下自定义标签部分。

重写这两个类 RadarChart和 XAxisRendererRadarChart。其实也就是更改一个方法,别觉得有什么太困难。

我们先看一下为什么我们需要重写源码。

RadarChart源码里并没有提供多颜色标签的方法。点进去setTextColor(),我们可以发现。

在这里插入图片描述

我们找getTextColor(),也就是看看在哪里用了这个颜色。

一点发现,好多方法,我们只看我们需要的,比如现在我们要定义的是x轴标签,也就是最外围的标签,所以选择XAxisRendererRadarChart,

进去之后,发现在这里获取了颜色的值,接着往下看

在这里插入图片描述

这个方法就是进行我们标签绘制的地方。接着我们开始操作。

/*** @author Petterp on 2019/5/11* Summary:重写XAxisRendererRadarChart* 邮箱:1509492795@qq.com*/
public class XAxisRendererRandarChart extends XAxisRendererRadarChart {private RadarChart mChart;public XAxisRendererRandarChart(ViewPortHandler viewPortHandler, XAxis xAxis, RadarChart chart) {super(viewPortHandler, xAxis, chart);mChart=chart;}@Overridepublic void renderAxisLabels(Canvas c) {if (!mXAxis.isEnabled() || !mXAxis.isDrawLabelsEnabled())return;final float labelRotationAngleDegrees = mXAxis.getLabelRotationAngle();final MPPointF drawLabelAnchor = MPPointF.getInstance(0.5f, 0.25f);mAxisLabelPaint.setTypeface(mXAxis.getTypeface());mAxisLabelPaint.setTextSize(mXAxis.getTextSize());
//        将这句话移到下面
//        mAxisLabelPaint.setColor(mXAxis.getTextColor());float sliceangle = mChart.getSliceAngle();// calculate the factor that is needed for transforming the value to// pixelsfloat factor = mChart.getFactor();MPPointF center = mChart.getCenterOffsets();MPPointF pOut = MPPointF.getInstance(0,0);for (int i = 0; i < mChart.getData().getMaxEntryCountSet().getEntryCount(); i++) {//这里是改动的地方mAxisLabelPaint.setColor(mXAxis.getTextColor());String label = mXAxis.getValueFormatter().getAxisLabel(i, mXAxis);float angle = (sliceangle * i + mChart.getRotationAngle()) % 360f;Utils.getPosition(center, mChart.getYRange() * factor+ mXAxis.mLabelRotatedWidth / 2f, angle, pOut);drawLabel(c, label, pOut.x, pOut.y - mXAxis.mLabelRotatedHeight / 2.f,drawLabelAnchor, labelRotationAngleDegrees);}MPPointF.recycleInstance(center);MPPointF.recycleInstance(pOut);MPPointF.recycleInstance(drawLabelAnchor);}
}

但是就这样还不行,我们还需要重写一个类,RadarCharts ,要不然你用的还是官方的类,不就等于没改吗。

所以继续看。
在这里插入图片描述

RodarCharts类这里这两个方法,是不是就是刚才我们重新的其中一个。接着往下看。
在这里插入图片描述

这里创建了XAxisRendererRadarChart的实例。所以我们需要更改的地方很简单,那就是将这里的类替换成我们的类即可。

这里我就不贴代码了,有点长。也没啥重要的。

最后在布局文件处进行更改,这样就完成了自定义x轴标签,当然我们只做了最简单的几个操作,是不是很简单吧。

<com.petterp.radchart.RadarChartsandroid:id="@+id/chart"android:layout_width="match_parent"android:layout_height="match_parent" />

好了,以上就是MPAndroidChart 雷达图的基本使用了,如果有什么不懂的,也欢迎随时提问,我们一起进步!!!

最后,附上github的链接。相应的源码也在其中。
https://github.com/Petterpx/MPAndroidChart_RadarChartDemo

这篇关于MPAndroidChart_RadarChart雷达图的那些事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/407462

相关文章

Xiaojie雷达之路---雷达间干扰(二)置零法对干扰抑制

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下时域置零对雷达间干扰抑制的效果,一起来看看吧!!! 文章目录 前言正文原理性介绍代码 前言 在上一篇文章中介绍了BPM对雷达间干扰抑制的方法,而本篇文章是采用时域置零的方法进行雷达间干扰抑制 效果图: 视频如下: 雷达间干扰 正文

【R语言 可视化】R语言画雷达图

1、安装插件 github网址: https://github.com/ricardo-bion/ggradar devtools::install_github("ricardo-bion/ggradar")install.packages("knitr") 2、效果图 3、源代码 rm(list=ls())gc()library(ggradar)mydata<-ma

ECharts实现雷达图详解

ECharts 是一款由百度开源的数据可视化工具,它提供了丰富的图表类型,如折线图、柱状图、饼图、散点图、雷达图、地图、K线图、热力图、仪表盘等,以及丰富的交互功能。ECharts 组件的核心功能实现原理主要包括以下几个方面: 数据驱动: ECharts 采用数据驱动的设计理念,图表的生成和更新都是基于数据的。用户通过设置 option 对象来描述图表的配置,包括数据、坐标轴、系列类型、图例等

Emgu-WPF 激光雷达研究-绘制雷达图

硬件:Hokuyo URG04LX 环境:VS2017- win10- 64  Emgu_3.2.0.2682 语言:C#  WPF   数据解析参考: https://sourceforge.net/p/urgnetwork/wiki/Home/ https://github.com/bqhdev/urg04lx_data_decoder http://sourceforge.ne

基于RK3568智慧交通-雷达视频融合一体机,支持鸿蒙

智慧交通-雷达视频融合一体机 随着5G网络与智慧交通车路协同系统在全国各点的落地,作为提升交通安全的前沿技术方案也愈发受到重视。 在交通信控领域,以往的感知技术、无论是地磁、线圈还是摄像头,功能都仅仅局限于数清经过了多少车辆,无法满足交通数字化管理对精细化、智能化管控的需求。 雷视融合一体机具备全天候和长距离的检测属性,除了统计车流量外,还可监测、跟踪车辆的运动行为特征,锁定车辆信息。同

lidar3607.2 lidar360mls7.2 强大的雷达点云数据处理应用软件

1、LiDAR360是一款强大的激光雷达点云数据处理和分析平台,拥有超过10种先进的点云数据处理算法,可同时处理超过300G点云数据。平台包含丰富的编辑工具和自动航带拼接功能,可为地形、林业、矿山和电力行业(参考LiPowerline软件)提供应用。        2、地形模块包含用于标准地形产品生产的一系列工具。点云滤波算法可精确提取复杂环境下的地面点,从而提高地形测绘精度。该

雷达水位监测站低功耗及免维护设计

QY-15雷达水位监测站采用非接触雷达,无磨损无污染产品概述 雷达水位监测站是一款高精度且具有水面波动滤波处理的地表水水位测量产品。它采用喇叭天线的设计,降低功耗,宽范围的输入电压,专门设计于适合野外无人值守的野外自动站应用,测量不受大气温度、压力、空气密度、风、降水、相对湿度的影响,具有稳定性、低功耗及免维护设计。产品具有灵活的工作模式配置。 用途 雷达测量原理适用于在测量水库、河流、

Chart.js 雷达图

Chart.js 雷达图 介绍 雷达图,也称为网络图或星图,是一种以多边形形式展示多变量数据的图表。每个轴代表一个变量,轴的长度通常是量化的,所有的轴都从同一个中心点开始,形成一个闭环。雷达图非常适合展示多个量化指标,比如技能、能力或者多个维度的性能评估。Chart.js 是一个流行的开源JavaScript图表库,它支持包括雷达图在内的多种图表类型。 Chart.js 雷达图的特点 直观

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

AOP和BOOST雷达型号有什么区别?

摘要:TI官方例程说明中,有的指明雷达开发板型号是AOP,例如AWR1843BOOST,AWR1843AOPEVM。其实他们的最关键区别就是天线是不是封装在芯片内部了。 比如我们查一下IWR6843AOP的手册,可以看出来芯片内置了天线。AOP的意思是Antennas-On-Package。 这个电路板的外观如下图所示。  下图来源[FAQ] [参考译文] [常见问题解答] IW