统计图表--第三方开源--MPAndroidChart(一)

摘要:
渲染1:渲染2:MPAndroidChart是Android平台上开源的第三方统计图表库。它可以绘制各种风格复杂丰富的统计图表,如常见的折线图、饼图、直方图、散点图、“蜡烛”图、“泡沫”统计图、金融股票中使用的雷达统计饼图等。总之,Android MPChart基本上可以满足安卓平台上日常统计图表开发的需求。AndroidMPChart在github上的项目主页:https://github.com/PhilJay/MPAndroidChart在项目的库中,可以通过导入其发布的jar包来使用MPAndroidChart。

效果图1:

统计图表--第三方开源--MPAndroidChart(一)第1张

效果图2:

统计图表--第三方开源--MPAndroidChart(一)第2张

MPAndroidChart是在Android平台上开源的第三方统计图表库,可以绘制样式复杂、丰富的各种统计图表,如一般常见的折线图、饼状图、柱状图、散点图、金融股票中使用的的“蜡烛”图、“泡泡”统计图、雷达状统计饼状图等等。简言之,AndroidMPChart基本上可以满足日常在Android平台上的统计图表开发需要。
AndroidMPChart在github上的项目主页: https://github.com/PhilJay/MPAndroidChart 
在自己的项目的libs中,导入其发布的jar包即可使用MPAndroidChart。MPAndroidChart发布的jar包页面在:https://github.com/PhilJay/MPAndroidChart/releases 
AndroidMPChart使用方法:在上面的releases页面下载最新的jar包,复制到自己的项目libs中即可使用。

统计图表--第三方开源--MPAndroidChart(一)第3张

代码:

activity_main.xml:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <com.github.mikephil.charting.charts.LineChart
 7         android:id="@+id/chart"
 8         android:layout_width="match_parent"
 9         android:layout_height="match_parent" />
10 
11 </RelativeLayout>

MainActivity.java:

  1 package com.example.testmpandroidchart;
  2 
  3 import java.util.ArrayList;
  4 
  5 import com.github.mikephil.charting.charts.LineChart;
  6 import com.github.mikephil.charting.components.Legend;
  7 import com.github.mikephil.charting.components.Legend.LegendForm;
  8 import com.github.mikephil.charting.components.Legend.LegendPosition;
  9 import com.github.mikephil.charting.data.Entry;
 10 import com.github.mikephil.charting.data.LineData;
 11 import com.github.mikephil.charting.data.LineDataSet;
 12 import com.github.mikephil.charting.formatter.ValueFormatter;
 13 import com.github.mikephil.charting.utils.ViewPortHandler;
 14 
 15 import android.app.Activity;
 16 import android.graphics.Color;
 17 import android.os.Bundle;
 18 
 19 public class MainActivity extends Activity {
 20 
 21     @Override
 22     protected void onCreate(Bundle savedInstanceState) {
 23         super.onCreate(savedInstanceState);
 24         setContentView(R.layout.activity_main);
 25 
 26         LineChart mLineChart = (LineChart) findViewById(R.id.chart);
 27 
 28         // 制作7个数据点(沿x坐标)
 29         LineData mLineData = makeLineData(7);
 30         setCharStyle(mLineChart, mLineData, Color.WHITE);
 31     }
 32 
 33     private LineData makeLineData(int count) {
 34 
 35         // x轴显示的数据设置
 36         ArrayList<String> x = new ArrayList<String>();
 37         for (int i = 0; i < count; i++) {
 38             x.add(i + "");
 39         }
 40 
 41         // y轴数据设置
 42         ArrayList<Entry> y = new ArrayList<Entry>();
 43         for (int i = 0; i < count; i++) {
 44             float val = (float) (Math.random() * 100);
 45             Entry entry = new Entry(val, i);
 46             y.add(entry);
 47         }
 48 
 49         // y轴数据集
 50         LineDataSet mLineDataSet = new LineDataSet(y, "测试数据");
 51 
 52         // 用y轴的集合来设置参数
 53         // 线宽
 54         mLineDataSet.setLineWidth(3.0f);
 55 
 56         // 显示的圆形大小
 57         mLineDataSet.setCircleSize(5.0f);
 58 
 59         // 折线的颜色
 60         mLineDataSet.setColor(Color.RED);
 61 
 62         // 圆球的颜色
 63         mLineDataSet.setCircleColor(Color.BLUE);
 64 
 65         // 填充折线上数据点、圆球里面包裹的中心空白处的颜色
 66         mLineDataSet.setCircleColorHole(Color.GREEN);
 67 
 68         // 设置mLineDataSet.setDrawHighlightIndicators(false)后,
 69         // Highlight的十字交叉的纵横线将不会显示,
 70         // 同时,mLineDataSet.setHighLightColor(Color.CYAN)失效。
 71         mLineDataSet.setDrawHighlightIndicators(true);
 72 
 73         // 按击后,十字交叉线的颜色
 74         mLineDataSet.setHighLightColor(Color.RED);
 75 
 76         // 设置这项上显示数据点的字体大小和颜色
 77         mLineDataSet.setValueTextSize(15.0f);
 78         mLineDataSet.setValueTextColor(Color.BLUE);
 79 
 80         mLineDataSet.setDrawCircleHole(true);
 81 
 82 //         // 改变折线样式,用曲线
 83 //         // 默认是直线
 84 //         mLineDataSet.setDrawCubic(true);
 85 //         // 曲线的平滑度,值越大越平滑。
 86 //         mLineDataSet.setCubicIntensity(0.3f);
 87 //        
 88 //         // 填充曲线下方的区域设置,黄色和透明
 89 //         mLineDataSet.setDrawFilled(true);
 90 //         mLineDataSet.setFillColor(Color.YELLOW);
 91 //         mLineDataSet.setFillAlpha(128);
 92          
 93         // 设置折线上显示数据的格式。如果不设置,将默认显示float数据格式。
 94         mLineDataSet.setValueFormatter(new ValueFormatter() {
 95 
 96             @Override
 97             public String getFormattedValue(float value, Entry entry, int dataSetIndex,
 98                     ViewPortHandler viewPortHandler) {
 99                 int n = (int) value;
100                 String s = "y=" + n;
101                 return s;
102             }
103         });
104 
105         ArrayList<LineDataSet> mLineDataSets = new ArrayList<LineDataSet>();
106         mLineDataSets.add(mLineDataSet);
107 
108         LineData mLineData = new LineData(x, mLineDataSets);
109         return mLineData;
110     }
111 
112     private void setCharStyle(LineChart mLineChart, LineData mLineData, int color) {
113         // 是否在折线图上添加边框
114         mLineChart.setDrawBorders(true);
115 
116         // 数据描述
117         mLineChart.setDescription("描述信息在这里");
118         mLineChart.setDescriptionTextSize(30.0f);
119         mLineChart.setDescriptionColor(Color.BLUE);
120 
121         // 如果没有数据的时候,会显示这个,类似listview的emtpyview
122         mLineChart.setNoDataTextDescription("如果传给MPAndroidChart的数据为空,那么你将看到这段文字");
123 
124         // 是否绘制表格内背景颜色。
125         // 如果mLineChart.setDrawGridBackground(false),
126         // 那么mLineChart.setGridBackgroundColor(Color.CYAN)将失效;
127         mLineChart.setDrawGridBackground(false);
128         mLineChart.setGridBackgroundColor(Color.GRAY);
129 
130         // 触摸
131         mLineChart.setTouchEnabled(true);
132 
133         // 拖拽
134         mLineChart.setDragEnabled(true);
135 
136         // 缩放
137         mLineChart.setScaleEnabled(true);
138         mLineChart.setPinchZoom(true);
139 
140         // 设置背景
141         mLineChart.setBackgroundColor(color);
142 
143         // 设置x,y的数据
144         mLineChart.setData(mLineData);
145 
146         // 设置比例图标示,就是那个一组y的value的
147         Legend mLegend = mLineChart.getLegend();
148         mLegend.setPosition(LegendPosition.BELOW_CHART_CENTER);
149         mLegend.setForm(LegendForm.CIRCLE);// 样式,默认为方形
150         mLegend.setFormSize(20.0f);// 样式图标大小
151         mLegend.setTextColor(Color.BLUE);
152         mLegend.setTextSize(20.0f);// 设置字体大小
153 
154         // 沿x轴动画,时间2000毫秒。
155         mLineChart.animateX(2000);
156     }
157 
158 }

实现图片2的效果只需把注释的代码重新启用:

 1 //         // 改变折线样式,用曲线
 2 //         // 默认是直线
 3 //         mLineDataSet.setDrawCubic(true);
 4 //         // 曲线的平滑度,值越大越平滑。
 5 //         mLineDataSet.setCubicIntensity(0.3f);
 6 //        
 7 //         // 填充曲线下方的区域设置,黄色和透明
 8 //         mLineDataSet.setDrawFilled(true);
 9 //         mLineDataSet.setFillColor(Color.YELLOW);
10 //         mLineDa

免责声明:文章转载自《统计图表--第三方开源--MPAndroidChart(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nginx+tomcat做负载均衡,当某个tomcat宕机,会发生什么情况,如何解决?金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

7 款顶级的开源 Web 分析软件

Web 分析无非就是 Web 流量的测量。但它并不限于测量网络流量,还包括: 分析 数据采集 为了了解和优化网页而上报网络数据 Google Analytics是最广泛使用的基于云的网络分析服务。不过,你的数据已被锁定在Google的生态系统中。如果你想要100%的数据拥有权,请尝试以下开源网络分析软件来获取有关网站的访问者数量和页面浏览量的信息。...

携程开源框架Apollo基础学习(一)

工作中经常会遇到许多本菜鸡之前听都没听过的东西...这就是其中之一,为此俺去学习了下基础部分,算是先入个门。 本文知识点主要来自于github的教程&各位csdn/博客园博主的总结。 下面让我娓娓道来~ 参考链接:Github链接:https://github.com/ctripcorp/apollo 部署文档: 1.https://ctripco...

各种开源协议

开源世界里面必须遵循各种协议,这里进行汇总。支持开源. 开源BSD协议 BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中...

C语言是开源的吗?C++是开源的吗?C语言、C++是两个开源的标准,而不是开源软件或其它

我一度对于C语言与C++是不是开源语言很困惑:为什么有那么多人鼓吹Java、Python、PHP等是开源语言,却没有人提C与C++开源与否呢?今天在stackoverflow上找到了几个比较满意的回答,特写篇博文总结一下老外的回答,也供各位对此问题持疑问态度的朋友一个参考。 关于C语言开源与否: C语言是一个由ISO组织中的ANSI制定的标准,任何个人或者...

3、YishaAdmin开源框架搭建

框架:vs2019、.net core 3.1 SDK 下载地址:https://github.com/liukuo362573/YiShaAdmin 数据库: 1). MySql >= 5.7 (本项目选择mysql数据库) 2). SqlServer >= Sql Server 2012 3). Oracle >= Oracle DB...

.NET开源快速开发框架Colder发布 (NET452+AdminLTE版)

.NET开源快速开发框架Colder(NET452+AdminLTE版) 引言 半年前将基于Easyui的快速开发框架开源,三个版本(NET4.52,NETCore和NET4.0)总共荣获200+星,得到了大家的认可,也很高兴能够帮助到大家。但不可否认的是Easyui在现在各大主流UI框架(Bootstrap、iview、Layui、element-ui等...