在应用开发过程中,为了直观地显示数据变化的趋势,往往采用折线图、柱状图显示,为了显示比例的分配,采用饼状图显示,这一系列的图形,都可以使用一个开源框架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图表(最新版)----折线图相关推荐

  1. 用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+智能web端高保真大数据动态可视化大屏看板+中国动态地图+智慧电商实时动态数据大屏看板

    作品内容:用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+web端高保真大数据动态可视化大屏看板+中国动态地图+电商实时动态数据大屏看板 ...

  2. 数据可视化图表之面积折线图

    相信不少制作报表大屏的人都会遇到一个问题:我要制作每个月收入和支出趋势的报表,是要用折线图还是面积图?到底用什么图表来展示比较好?其实每个图表都有自己的特点,都有适合展示的数据类型,只要你熟悉了解每个 ...

  3. ExtJS6图表简单demo(折线图,散点图,柱状图)

    ExtJS6图表简单demo(折线图,散点图,柱状图) 首先需要引入这三个文件,都懂 <link rel="stylesheet" type="text/css&q ...

  4. Qt Charts 图表组件(折线图)

    目录 简述 折线图 简述 QtCharts模块是一组易于使用的图表组件,它基于Qt的GraphicsView架构,其核心组件是QChartView和QChart. 1.QChartView的父类是QG ...

  5. Android使用MPAndroidChart画折线图

    MPAndroidChart GitHub地址https://github.com/PhilJay/MPAndroidChart 一个强大的Android图表视图/图形视图库,支持直线-条形-饼-雷达 ...

  6. 使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)

    WebChartControl是DevExpress控件群下的一个Web图表控件,它使用非常的方便,生成的图表也相当的漂亮. 先贴出几张WebChartControl生成的图表: Web页面代码Web ...

  7. 【转】使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)

    第一次写博,没什么经验,主要是把最近自己对Dev的一些研究贴出来大家共同探讨,有不足之处望大家帮忙斧正. WebChartControl是DevExpress控件群下的一个Web图表控件,它使用非常的 ...

  8. 【GraphMaker】Unity3D图表——柱状图、折线图、饼图

    http://blog.csdn.net/yongh701/article/details/71637090?utm_source=itdadao&utm_medium=referral 版权 ...

  9. 常用echart图表(柱状图、折线图、饼图、环形进度条、雷达图等等)基础配置和用法、resize()响应、轮播tooltip

    一.最简单的使用方式引入官方echart.js即可 <script src="js/echarts.js"></script> 二.页面准备一个DOM容器 ...

  10. Android之绘制动态折线图

    所谓动态折线图,就是折线图能随着手指的滑动进行动态绘制,这里很定会产生动画效果.基于这个效果,这里使用SurfaceView进行制图. 实现步奏如下: (1): 这里新建一个绘图ChartView,继 ...

最新文章

  1. Magento 2中文手册之常见概念解析
  2. 宣告放弃社交后,支付宝把希望放在了“信息流”上
  3. GARFIELD@01-18-2005
  4. DirectX Shader 入门学习
  5. 2019牛客提前批一血:猝不及防的java实习面经
  6. 推荐一些能提高生产力的 Python 库
  7. Spark笔记:复杂RDD的API的理解(下)
  8. 2_C语言中的数据类型 (四)整数与无符号数
  9. String类常用方法记录
  10. systemctl自定义service
  11. Struts2相关面试题
  12. spring页面使用注解@RequestParam把请求参数封装到map中
  13. 对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?...
  14. HDU 6070 Dirt Ratio 线段树 二分
  15. Base64 在线编码解码
  16. 数据分析——房源分析项目
  17. 如何区分单模和多模光纤收发器
  18. JSF与JSTL TAG的互用问题
  19. 【基础】网络端口 80 和 443 区别解析
  20. 寒假训练十(map,pair,string)2020.02.17(4题)

热门文章

  1. python智能识别 病虫草害_Python图片识别——人工智能篇
  2. linux中IGV的运行,[Linux] IGV使用说明
  3. 异步转同步导致CPU空转优化
  4. C语言-大数次幂运算方法
  5. 二分类中的precision,recall,F1值计算(举例)
  6. USBCopyer 插上优盘自动复制文件 v3.5
  7. 计算机网络第七版谢希仁课后习题3-24,3-25
  8. 这些关于基金从业资格证的“坑”,你都踩了多少?
  9. js中的continue语句
  10. “华尔街之狼”:ICO是“史上最大骗局”