github地址:https://github.com/PhilJay/MPAndroidChart


添加依赖:

  • Add the following to your project level build.gradle:
  1. allprojects {
  2. repositories {
  3. maven { url "https://jitpack.io" }
  4. }
  5. }
  • Add this to your app build.gradle:
  1. dependencies {
  2. compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
  3. }

  1. 下载Demo演示,修改成自己的需求即可
    如饼图的示例代码:
  1. import android.graphics.Color;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.util.DisplayMetrics;
  5.  
  6. import com.github.mikephil.charting.charts.PieChart;
  7. import com.github.mikephil.charting.components.Description;
  8. import com.github.mikephil.charting.components.Legend;
  9. import com.github.mikephil.charting.data.PieData;
  10. import com.github.mikephil.charting.data.PieDataSet;
  11. import com.github.mikephil.charting.data.PieEntry;
  12.  
  13. import java.util.ArrayList;
  14.  
  15. public class MainActivity extends AppCompatActivity {
  16. private PieChart mChart;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.activity_main);
  21. mChart = (PieChart) findViewById(R.id.pieChart);
  22. PieData mPieData = getPieData(4, 100);
  23. showChart(mChart, mPieData);
  24. }
  25.  
  26. private void showChart(PieChart pieChart, PieData pieData) {
  27. pieChart.setHoleColor(Color.TRANSPARENT);
  28. pieChart.setHoleRadius(60f); //半径
  29. pieChart.setTransparentCircleRadius(64f); // 半透明圈
  30. //pieChart.setHoleRadius(0) //实心圆
  31. Description description = new Description();
  32. description.setText("测试饼状图");
  33. pieChart.setDescription(description);
  34. // mChart.setDrawYValues(true);
  35. pieChart.setDrawCenterText(true); //饼状图中间可以添加文字
  36. pieChart.setDrawHoleEnabled(true);
  37. pieChart.setRotationAngle(90); // 初始旋转角度
  38. pieChart.setRotationEnabled(true); // 可以手动旋转
  39. pieChart.setUsePercentValues(true); //显示成百分比
  40. pieChart.setCenterText("测试"); //饼状图中间的文字
  41. pieChart.setCenterTextSize(18);
  42. //设置数据
  43. pieChart.setData(pieData);
  44. Legend mLegend = pieChart.getLegend(); //设置比例图
  45. mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART); //最右边显示
  46. // mLegend.setForm(LegendForm.LINE); //设置比例图的形状,默认是方形
  47. mLegend.setXEntrySpace(7f);
  48. mLegend.setYEntrySpace(5f);
  49. pieChart.animateXY(1000, 1000); //设置动画
  50. }
  51.  
  52. /**
  53. *
  54. * @param count 分成几部分
  55. * @param range
  56. */
  57. private PieData getPieData(int count, float range) {
  58. ArrayList<String> xValues = new ArrayList<String>(); //xVals用来表示每个饼块上的内容
  59. for (int i = 0; i < count; i++) {
  60. xValues.add("Quarterly" + (i + 1)); //饼块上显示成Quarterly1, Quarterly2, Quarterly3, Quarterly4
  61. }
  62.  
  63. ArrayList<PieEntry> yValues = new ArrayList(); //yVals用来表示封装每个饼块的实际数据
  64. // 饼图数据
  65. /**
  66. * 将一个饼形图分成四部分, 四部分的数值比例为14:14:34:38
  67. * 所以 14代表的百分比就是14%
  68. */
  69. float quarterly1 = 14;
  70. float quarterly2 = 14;
  71. float quarterly3 = 34;
  72. float quarterly4 = 38;
  73. yValues.add(new PieEntry(quarterly1, 0));
  74. yValues.add(new PieEntry(quarterly2, 1));
  75. yValues.add(new PieEntry(quarterly3, 2));
  76. yValues.add(new PieEntry(quarterly4, 3));
  77. //y轴的集合
  78. PieDataSet pieDataSet = new PieDataSet(yValues, "Quarterly Revenue 2014"/*显示在比例图上*/);
  79. pieDataSet.setSliceSpace(0f); //设置个饼状图之间的距离
  80. ArrayList<Integer> colors = new ArrayList<Integer>();
  81. // 饼图颜色
  82. colors.add(Color.rgb(205, 205, 205));
  83. colors.add(Color.rgb(114, 188, 223));
  84. colors.add(Color.rgb(255, 123, 124));
  85. colors.add(Color.rgb(57, 135, 200));
  86. pieDataSet.setColors(colors);
  87. DisplayMetrics metrics = getResources().getDisplayMetrics();
  88. float px = 5 * (metrics.densityDpi / 160f);
  89. pieDataSet.setSelectionShift(px); // 选中态多出的长度
  90. PieData pieData = new PieData(pieDataSet);
  91. return pieData;
  92. }
  93. }

activity_main.xml

  1. <com.github.mikephil.charting.charts.PieChart
  2. android:id="@+id/pieChart"
  3. android:layout_width="match_parent"
  4. android:layout_height="320dp"
  5. />
  1.  

android开源图表库MPAndroidChart(曲线图、直方图、饼状图)的更多相关文章

  1. 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页

    因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...

  2. Android开源图表库介绍

    XCL-Charts XCL-Charts V1.8     Android开源图表库(XCL-Charts is a free charting library for Android platfo ...

  3. Android开源图表库XCL-Charts版本号公布及展示页

    XCL-Charts V2.1 Android开源图表库(XCL-Charts is a free charting library for Android platform.) XCL-Charts ...

  4. Android图表库MPAndroidChart(三)——双重轴线形图的实现,这次就so easy了

    Android图表库MPAndroidChart(三)--双重轴线形图的实现,这次就so easy了 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

  5. android 开源图表库MPChart最简单使用方法示例教程Demo--折线图 柱状图

    转载请注明本文出处:http://blog.csdn.net/wingichoy/article/details/50428246 MPChart是android上一款强大的图表开源库,他可以轻松的绘 ...

  6. JS图表插件(柱形图、饼状图、折线图)

    http://www.open-open.com/lib/view/open1406378625726.html

  7. Android图表库MPAndroidChart(五)——自定义MarkerView实现选中高亮

    Android图表库MPAndroidChart(五)--自定义MarkerView实现选中高亮 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...

  8. Android图表库MPAndroidChart(四)——条形图的绘制过程过程,隐隐约约我看到了套路

    Android图表库MPAndroidChart(四)--条形图的绘制过程过程,隐隐约约我看到了套路 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库 ...

  9. Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的

    Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...

随机推荐

  1. Java定义栈结构,实现入栈、出栈操作

    package com.example.demo; import java.util.ArrayList; public class Stack { ArrayList<Object> l ...

  2. 虚拟机Linux下扩展硬盘的方法

    [原文链接]:http://blog.csdn.net/tianlesoftware/article/details/5642883 装虚拟机时空间划小了,于是又加了5G的空间,折腾了半天,挂上去了. ...

  3. Delphi 指针类型

  4. Centos7 初始化

    systemctl disable firewalld sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config grubby - ...

  5. Codeforces Round #344 (Div. 2) 631 B. Print Check (实现)

    B. Print Check time limit per test1 second memory limit per test256 megabytes inputstandard input ou ...

  6. C++的一些黑暗料理

    本文中的“黑暗料理”仅限本人在学习C++的过程中感觉易忘.有趣.不为大多数人所知的一些特性. 1. C++中int型数据在VC++环境下最小值为什么是 -32678,而不是-32677,其中涉及到原码 ...

  7. 【AGC005 F】Many Easy Problems

    神他吗一天考一道码农题两道 FFT(其实还是我推式子一窍不通) 题意 给你一棵 \(n\) 个点的树,再给你一个常数 \(k\). 设 \(S\) 为树上某些点的集合,定义 \(f(S)\) 为最小的 ...

  8. PHP preg_match正则表达式

    行定位符 ^表示开始 $表示结束 preg_match(模式,待搜索的字符串,$matches) 其中matches为可选参数,一旦匹配上,可以返回匹配结果 举个例子: $pattern = '/#\ ...

  9. 1、检查并修改mysql的my.ini的配置文件

    代码如下: default-character-set=utf8 2.建立数据库是要指定字符集 代码如下: create database mydb default character set utf ...

  10. Web API接口规范与测试方法

    目录 1.Web API接口 1.1接口的四大特点 1.2接口文档的编写:YApi 1.3接口测试工具:Postman 2.接口规范(restful) 2.1URL设计 2.1.1 数据的安全保障(h ...