效果图1:

效果图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中即可使用。

代码:

activity_main.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" > <com.github.mikephil.charting.charts.LineChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" /> </RelativeLayout>

MainActivity.java:

 package com.example.testmpandroidchart;

 import java.util.ArrayList;

 import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.Legend.LegendForm;
import com.github.mikephil.charting.components.Legend.LegendPosition;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.ValueFormatter;
import com.github.mikephil.charting.utils.ViewPortHandler; import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); LineChart mLineChart = (LineChart) findViewById(R.id.chart); // 制作7个数据点(沿x坐标)
LineData mLineData = makeLineData(7);
setCharStyle(mLineChart, mLineData, Color.WHITE);
} private LineData makeLineData(int count) { // x轴显示的数据设置
ArrayList<String> x = new ArrayList<String>();
for (int i = 0; i < count; i++) {
x.add(i + "");
} // y轴数据设置
ArrayList<Entry> y = new ArrayList<Entry>();
for (int i = 0; i < count; i++) {
float val = (float) (Math.random() * 100);
Entry entry = new Entry(val, i);
y.add(entry);
} // y轴数据集
LineDataSet mLineDataSet = new LineDataSet(y, "测试数据"); // 用y轴的集合来设置参数
// 线宽
mLineDataSet.setLineWidth(3.0f); // 显示的圆形大小
mLineDataSet.setCircleSize(5.0f); // 折线的颜色
mLineDataSet.setColor(Color.RED); // 圆球的颜色
mLineDataSet.setCircleColor(Color.BLUE); // 填充折线上数据点、圆球里面包裹的中心空白处的颜色
mLineDataSet.setCircleColorHole(Color.GREEN); // 设置mLineDataSet.setDrawHighlightIndicators(false)后,
// Highlight的十字交叉的纵横线将不会显示,
// 同时,mLineDataSet.setHighLightColor(Color.CYAN)失效。
mLineDataSet.setDrawHighlightIndicators(true); // 按击后,十字交叉线的颜色
mLineDataSet.setHighLightColor(Color.RED); // 设置这项上显示数据点的字体大小和颜色
mLineDataSet.setValueTextSize(15.0f);
mLineDataSet.setValueTextColor(Color.BLUE); mLineDataSet.setDrawCircleHole(true); // // 改变折线样式,用曲线
// // 默认是直线
// mLineDataSet.setDrawCubic(true);
// // 曲线的平滑度,值越大越平滑。
// mLineDataSet.setCubicIntensity(0.3f);
//
// // 填充曲线下方的区域设置,黄色和透明
// mLineDataSet.setDrawFilled(true);
// mLineDataSet.setFillColor(Color.YELLOW);
// mLineDataSet.setFillAlpha(128); // 设置折线上显示数据的格式。如果不设置,将默认显示float数据格式。
mLineDataSet.setValueFormatter(new ValueFormatter() { @Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex,
ViewPortHandler viewPortHandler) {
int n = (int) value;
String s = "y=" + n;
return s;
}
}); ArrayList<LineDataSet> mLineDataSets = new ArrayList<LineDataSet>();
mLineDataSets.add(mLineDataSet); LineData mLineData = new LineData(x, mLineDataSets);
return mLineData;
} private void setCharStyle(LineChart mLineChart, LineData mLineData, int color) {
// 是否在折线图上添加边框
mLineChart.setDrawBorders(true); // 数据描述
mLineChart.setDescription("描述信息在这里");
mLineChart.setDescriptionTextSize(30.0f);
mLineChart.setDescriptionColor(Color.BLUE); // 如果没有数据的时候,会显示这个,类似listview的emtpyview
mLineChart.setNoDataTextDescription("如果传给MPAndroidChart的数据为空,那么你将看到这段文字"); // 是否绘制表格内背景颜色。
// 如果mLineChart.setDrawGridBackground(false),
// 那么mLineChart.setGridBackgroundColor(Color.CYAN)将失效;
mLineChart.setDrawGridBackground(false);
mLineChart.setGridBackgroundColor(Color.GRAY); // 触摸
mLineChart.setTouchEnabled(true); // 拖拽
mLineChart.setDragEnabled(true); // 缩放
mLineChart.setScaleEnabled(true);
mLineChart.setPinchZoom(true); // 设置背景
mLineChart.setBackgroundColor(color); // 设置x,y的数据
mLineChart.setData(mLineData); // 设置比例图标示,就是那个一组y的value的
Legend mLegend = mLineChart.getLegend();
mLegend.setPosition(LegendPosition.BELOW_CHART_CENTER);
mLegend.setForm(LegendForm.CIRCLE);// 样式,默认为方形
mLegend.setFormSize(20.0f);// 样式图标大小
mLegend.setTextColor(Color.BLUE);
mLegend.setTextSize(20.0f);// 设置字体大小 // 沿x轴动画,时间2000毫秒。
mLineChart.animateX(2000);
} }

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

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

统计图表--第三方开源--MPAndroidChart(一)的更多相关文章

  1. 第三方开源库和jar包的区别

    jar包和第三方开源库的根本区别在于,开源库的功能比jar包功能更强大,通过引入库项目可以访问java文件以及该开源库项目下的资源文件,例如图片,layout等文件 jar包中只能放class文件 引 ...

  2. iOS常用第三方开源框架和优秀开发者博客等

    博客收藏iOS开发过程好的开源框架.开源项目.Xcode工具插件.Mac软件.文章等,会不断更新维护,希望对你们有帮助.如果有推荐或者建议,请到此处提交推荐或者联系我. 该文档已提交GitHub,点击 ...

  3. python基础知识8——模块1——自定义模块和第三方开源模块

    模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...

  4. Android Studio 简介及导入 jar 包和第三方开源库方[转]

    原文:http://blog.sina.com.cn/s/blog_693301190102v6au.html Android Studio 简介 几天前的晚上突然又想使用 Android Studi ...

  5. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  6. 粉笔网iPhone端使用的第三方开源库

    粉笔网iPhone端使用的第三方开源库 前言 最近有朋友问我粉笔网 iPhone 端使用了哪些第三方的开源库.我在这儿整理了一下,分享给大家. ASIHttpRequest ASIHttpReques ...

  7. Android 第三方开源下拉框:NiceSpinner

    Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定 ...

  8. iOS - CocoaPods 第三方开源框架管理

    1.CocoaPods CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具.CocoaPods 的项目源码在 Github 上管理.该项目开始于 2011 年 8 月 12 日,在这 ...

  9. iOS项目中常用的第三方开源库

    1.项目使用的第三方开源库 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个. (1)AFNetworking 目前比较推荐的 ...

随机推荐

  1. 推荐一个代码生成工具:freemarker

    freemarker:http://freemarker.org/ 还有velocity:http://velocity.apache.org/

  2. (转)C# SSL-X509使用

    X.509 给出的鉴别框架是一种基于公开密钥体制的鉴别业务密钥管理.一个用户有两把密钥:一把是用户的专用密钥(简称为:私钥),另一把是其他用户都可得到和利用的公共密钥(简称为:公钥).该鉴别框架允许用 ...

  3. java数据结构之列表——ArrayList,LinkedList,比较

    刚看完<数据结构与算法分析java语言描述>的第3章中的表,下面回忆下主要知识点,主要说明各列表之间的关系,以及各自的优缺点.其中牵涉到内部类和嵌套类. 1 Collection APIp ...

  4. Filter Blue Light for Better Sleep(APP 推荐)

    Filter Blue Light for Better Sleep By Carolyn Mohr11 May, 2016 Many people like to use their phones ...

  5. OpenStack-Mitaka 一键安装测试环境脚本

    说明:这个脚本是采用Bash Shell编写,这个版本还只能作为测试环境搭建使用. 此脚本原形的发起人是网友:WuYuLiang.这里有他的博客链接:   第一版的链接: http://blog.cs ...

  6. 在使用 百度编辑器 Ueditor 时,不能进入 Controller 相应的 Action 的处理方法

    如果在前端的页面中使用了 Ueditor 编辑器,那么在提交表单数据时,将不会执行 期望的 Controller 中的 Action ,造成这样的原因是: 在 MVC 4 的框架中,当前端页面需要提交 ...

  7. No.012 Integer to Roman

    12. Integer to Roman Total Accepted: 71315 Total Submissions: 176625 Difficulty: Medium Given an int ...

  8. WebLogic集群案例分析

    WebLogic集群案例分析 2012年8月,某证券交易系统(采用Weblogic中间件),由于基金业务火爆,使系统压力太大,后台服务器频繁死机时,这时工程师们紧急调试系统及恢复操作,等完成这些操作花 ...

  9. ENVI 5.0 Beta 体验——影像数据的显示

    ENVI 5.0 Beta采用了全新的软件界面,数据的显示和操作跟以往的三视窗方式有很大的区别,下面一块体验一下. 对于栅格数据的显示方面,5.0有了非常大的改进,采用的全新的金字塔计算方法,在第一次 ...

  10. jQ复制按钮的插件zclip

    zclip官网:http://www.steamdev.com/zclip/ swf文件国内下载:ZeroClipboard.swf jQuery-zclip是一个复制内容到剪贴板的jQuery插件, ...