效果图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. BC水题--The Factor(质因分解)

    网址:http://acm.hdu.edu.cn/showproblem.php?pid=5428 roblem Description There is a sequence of n positi ...

  2. Wireshark "The NPF driver isn’t running…"

    (1)如果你使用的是Linux.Ubuntu系统,请用 >$ su Administrator命令切换到拥有最高权限的帐号,然后再输入命令:“net start npf”(如果不行自己查找类似命 ...

  3. 【转】三种不同类型的ssh隧道

    转自:http://blog.creke.net/722.html 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的 ...

  4. ETL,ESB,BPM为什么要这些图形

    ==================================== ETL模式架构:(ECCD架构) 捕获增量数据进行数据同步 ESB模式架构: 基于SOA以及工作流,通过适配器接入 BPM架构 ...

  5. 菜鸟-手把手教你把Acegi应用到实际项目中(5)

    在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式 ...

  6. WPS去掉键入时自动进行句首字母大写更正

    1.单击左上角的菜单选项 2.选择上图中的“选项”按钮

  7. Hive基础之自定义封装hivefile命令

    存在的问题:当把hql写到shell中,不方便阅读:但把hql写到文件中,又传递不了参数:怎么办呢? 自定义hivefile 执行方式形如: 第一个参数为要执行的hql文件,后续的参数为要替换的key ...

  8. Iptables 防火墙开放常见的22,53,80端口

    用iptables防火墙 iptables -F # 允许包从22端口进入 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许从22端口进入的包返回 ...

  9. unity3d学习重点记录

    本文主要是记录在学习unity3d中遇到的重点功能的实现,以及一些API的使用方法.以便在以后使用到的时候查找. 1,给一个UIButton添加执行的事件 // Use this for initia ...

  10. 【LeetCode】12. Integer to Roman 整型数转罗马数

    题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...