Android图表(最新版)----折线图
在应用开发过程中,为了直观地显示数据变化的趋势,往往采用折线图、柱状图显示,为了显示比例的分配,采用饼状图显示,这一系列的图形,都可以使用一个开源框架MPAndroidChart来实现。
在GitHub上下载这个开源框架,引进Android项目中。
implementation project(path: ':MPAndroidChart')
public class LineChart extends BarLineChartBase<LineData> implements LineDataProvider {public LineChart(Context context) {super(context);}public LineChart(Context context, AttributeSet attrs) {super(context, attrs);}public LineChart(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void init() {super.init();mRenderer = new LineChartRenderer(this, mAnimator, mViewPortHandler);}@Overridepublic LineData getLineData() {return mData;}@Overrideprotected void onDetachedFromWindow() {// releases the bitmap in the renderer to avoid oom errorif (mRenderer != null && mRenderer instanceof LineChartRenderer) {((LineChartRenderer) mRenderer).releaseBitmap();}super.onDetachedFromWindow();}
}
1、折线图
在布局文件中,添加折线图的布局。
<com.github.mikephil.charting.charts.LineChartandroid:id="@+id/line_chart"android:layout_width="match_parent"android:layout_height="300dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"></com.github.mikephil.charting.charts.LineChart>
接下来就需要在代码中设置折线图的各项数据。
(1)设置折线图描述setDescription
//设置该折线图的描述Description description = new Description();description.setText("天气变化");line_chart.setDescription(description);//是否绘制网格背景line_chart.setDrawGridBackground(true);
(2)设置X轴显示XAxis
//x轴的设置XAxis xAxis = line_chart.getXAxis();//将x轴的描述(文字 or 数字)显示在x轴下方xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//是否绘制x轴的网格线xAxis.setDrawGridLines(false);//是否绘制x轴的轴线xAxis.setDrawAxisLine(true);
(3)Y轴的设置YAxis
//y轴设置YAxis yAxis = line_chart.getAxisLeft();//y轴提供数据的区间个数5个 false:是否均匀显示数据yAxis.setLabelCount(5,false);
setLabelCount
指的是设置y轴区间个数,类似于下图展示的,也是大部分折线图都采用的显示方式,属于等比例显示区间。
(4)设置X和Y轴的数据setData
line_chart.setData(new LineData());
需要的数据源是LineData数据源,下面先看一下源码,分析一下。
public class LineData extends BarLineScatterCandleBubbleData<ILineDataSet> {public LineData() {super();}public LineData(ILineDataSet... dataSets) {super(dataSets);}public LineData(List<ILineDataSet> dataSets) {super(dataSets);}
}
LineData可以设置ILineDataSet... dataSets
多个参数,而且是LineDataSet
集,所以传入数据,就需要创建LineDataSet
集合。
public LineDataSet(List<Entry> yVals, String label) {super(yVals, label);// mCircleRadius = Utils.convertDpToPixel(4f);// mLineWidth = Utils.convertDpToPixel(1f);if (mCircleColors == null) {mCircleColors = new ArrayList<Integer>();}mCircleColors.clear();// default colors// mColors.add(Color.rgb(192, 255, 140));// mColors.add(Color.rgb(255, 247, 140));mCircleColors.add(Color.rgb(140, 234, 255));}
LineDataSet
需要传入的两个数据,一个是Entry
的集合,代表折线图中的点,是y轴的数据,label
指的是对y轴数据的描述。
Entry代表一个点,传入的2个参数分别代表x轴的数据和y轴的数据,y轴代表数据,x轴指的是时间。
* @param x the x value* @param y the y value (the actual value of the entry)*/public Entry(float x, float y) {super(y);this.x = x;}
所以具体显示数据的代码,如下所示
//显示数据line_chart.setData(getLineData());}private LineData getLineData() {//提供折线数据List<Entry> entries = new ArrayList<>();for (int i = 0; i < 12; i++) {//第一个参数:x轴的数据//第二个参数:y轴的数据entries.add(new Entry(i,(float) (Math.random() * 10) + 50));}//第二个参数:如图显示LineDataSet dataSet = new LineDataSet(entries,"随机数");//设置折线的宽度dataSet.setLineWidth(2.5f);//圆圈的大小dataSet.setCircleHoleRadius(4.5f);//设置颜色dataSet.setHighLightColor(Color.rgb(244,0,0));//是否显示圆点处的数据dataSet.setDrawValues(true);LineData lineData = new LineData(dataSet);return lineData;}
如图显示的数据
这个数据的数据源是自己造的,实际的项目开发中,会通过网络请求获取服务器的数据。
Android图表(最新版)----折线图相关推荐
- 用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+智能web端高保真大数据动态可视化大屏看板+中国动态地图+智慧电商实时动态数据大屏看板
作品内容:用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+web端高保真大数据动态可视化大屏看板+中国动态地图+电商实时动态数据大屏看板 ...
- 数据可视化图表之面积折线图
相信不少制作报表大屏的人都会遇到一个问题:我要制作每个月收入和支出趋势的报表,是要用折线图还是面积图?到底用什么图表来展示比较好?其实每个图表都有自己的特点,都有适合展示的数据类型,只要你熟悉了解每个 ...
- ExtJS6图表简单demo(折线图,散点图,柱状图)
ExtJS6图表简单demo(折线图,散点图,柱状图) 首先需要引入这三个文件,都懂 <link rel="stylesheet" type="text/css&q ...
- Qt Charts 图表组件(折线图)
目录 简述 折线图 简述 QtCharts模块是一组易于使用的图表组件,它基于Qt的GraphicsView架构,其核心组件是QChartView和QChart. 1.QChartView的父类是QG ...
- Android使用MPAndroidChart画折线图
MPAndroidChart GitHub地址https://github.com/PhilJay/MPAndroidChart 一个强大的Android图表视图/图形视图库,支持直线-条形-饼-雷达 ...
- 使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)
WebChartControl是DevExpress控件群下的一个Web图表控件,它使用非常的方便,生成的图表也相当的漂亮. 先贴出几张WebChartControl生成的图表: Web页面代码Web ...
- 【转】使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)
第一次写博,没什么经验,主要是把最近自己对Dev的一些研究贴出来大家共同探讨,有不足之处望大家帮忙斧正. WebChartControl是DevExpress控件群下的一个Web图表控件,它使用非常的 ...
- 【GraphMaker】Unity3D图表——柱状图、折线图、饼图
http://blog.csdn.net/yongh701/article/details/71637090?utm_source=itdadao&utm_medium=referral 版权 ...
- 常用echart图表(柱状图、折线图、饼图、环形进度条、雷达图等等)基础配置和用法、resize()响应、轮播tooltip
一.最简单的使用方式引入官方echart.js即可 <script src="js/echarts.js"></script> 二.页面准备一个DOM容器 ...
- Android之绘制动态折线图
所谓动态折线图,就是折线图能随着手指的滑动进行动态绘制,这里很定会产生动画效果.基于这个效果,这里使用SurfaceView进行制图. 实现步奏如下: (1): 这里新建一个绘图ChartView,继 ...
最新文章
- Magento 2中文手册之常见概念解析
- 宣告放弃社交后,支付宝把希望放在了“信息流”上
- GARFIELD@01-18-2005
- DirectX Shader 入门学习
- 2019牛客提前批一血:猝不及防的java实习面经
- 推荐一些能提高生产力的 Python 库
- Spark笔记:复杂RDD的API的理解(下)
- 2_C语言中的数据类型 (四)整数与无符号数
- String类常用方法记录
- systemctl自定义service
- Struts2相关面试题
- spring页面使用注解@RequestParam把请求参数封装到map中
- 对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?...
- HDU 6070 Dirt Ratio 线段树 二分
- Base64 在线编码解码
- 数据分析——房源分析项目
- 如何区分单模和多模光纤收发器
- JSF与JSTL TAG的互用问题
- 【基础】网络端口 80 和 443 区别解析
- 寒假训练十(map,pair,string)2020.02.17(4题)
热门文章
- python智能识别 病虫草害_Python图片识别——人工智能篇
- linux中IGV的运行,[Linux] IGV使用说明
- 异步转同步导致CPU空转优化
- C语言-大数次幂运算方法
- 二分类中的precision,recall,F1值计算(举例)
- USBCopyer 插上优盘自动复制文件 v3.5
- 计算机网络第七版谢希仁课后习题3-24,3-25
- 这些关于基金从业资格证的“坑”,你都踩了多少?
- js中的continue语句
- “华尔街之狼”:ICO是“史上最大骗局”