专栏首页恩蓝脚本Android MPAndroidChart开源图表库之饼状图的代码

Android MPAndroidChart开源图表库之饼状图的代码

MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活。MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。

GitHub地址

下面主要实现以下饼状图:

1.从上面的地址中下载最新mpandroidchartlibrary-2-0-8.jar包, 然后copy到项目的libs中;

2.定义xml文件;

3.主要Java逻辑代码如下,注释已经都添加上了。

package com.jackie.mpandroidpiechart; 
import java.util.ArrayList; 
import com.github.mikephil.charting.charts.PieChart; 
import com.github.mikephil.charting.components.Legend; 
import com.github.mikephil.charting.components.Legend.LegendPosition; 
import com.github.mikephil.charting.data.Entry; 
import com.github.mikephil.charting.data.PieData; 
import com.github.mikephil.charting.data.PieDataSet; 
import android.support.v7.app.ActionBarActivity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
public class MainActivity extends ActionBarActivity { 
private PieChart mChart; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
mChart = (PieChart) findViewById(R.id.spread_pie_chart); 
PieData mPieData = getPieData(4, 100); 
showChart(mChart, mPieData); 
} 
private void showChart(PieChart pieChart, PieData pieData) { 
pieChart.setHoleColorTransparent(true); 
pieChart.setHoleRadius(60f); //半径 
pieChart.setTransparentCircleRadius(64f); // 半透明圈 
//pieChart.setHoleRadius(0) //实心圆 
pieChart.setDescription("测试饼状图"); 
// mChart.setDrawYValues(true); 
pieChart.setDrawCenterText(true); //饼状图中间可以添加文字 
pieChart.setDrawHoleEnabled(true); 
pieChart.setRotationAngle(90); // 初始旋转角度 
// draws the corresponding description value into the slice 
// mChart.setDrawXValues(true); 
// enable rotation of the chart by touch 
pieChart.setRotationEnabled(true); // 可以手动旋转 
// display percentage values 
pieChart.setUsePercentValues(true); //显示成百分比 
// mChart.setUnit(" ?"); 
// mChart.setDrawUnitsInChart(true); 
// add a selection listener 
// mChart.setOnChartValueSelectedListener(this); 
// mChart.setTouchEnabled(false); 
// mChart.setOnAnimationListener(this); 
pieChart.setCenterText("Quarterly Revenue"); //饼状图中间的文字 
//设置数据 
pieChart.setData(pieData); 
// undo all highlights 
// pieChart.highlightValues(null); 
// pieChart.invalidate(); 
Legend mLegend = pieChart.getLegend(); //设置比例图 
mLegend.setPosition(LegendPosition.RIGHT_OF_CHART); //最右边显示 
// mLegend.setForm(LegendForm.LINE); //设置比例图的形状,默认是方形 
mLegend.setXEntrySpace(7f); 
mLegend.setYEntrySpace(5f); 
pieChart.animateXY(1000, 1000); //设置动画 
// mChart.spin(2000, 0, 360); 
} 
/** 
* 
* @param count 分成几部分 
* @param range 
*/ 
private PieData getPieData(int count, float range) { 
ArrayList<String  xValues = new ArrayList<String (); //xVals用来表示每个饼块上的内容 
for (int i = 0; i < count; i++) { 
xValues.add("Quarterly" + (i + 1)); //饼块上显示成Quarterly1, Quarterly2, Quarterly3, Quarterly4 
} 
ArrayList<Entry  yValues = new ArrayList<Entry (); //yVals用来表示封装每个饼块的实际数据 
// 饼图数据 
/** 
* 将一个饼形图分成四部分, 四部分的数值比例为14:14:34:38 
* 所以 14代表的百分比就是14% 
*/ 
float quarterly1 = 14; 
float quarterly2 = 14; 
float quarterly3 = 34; 
float quarterly4 = 38; 
yValues.add(new Entry(quarterly1, 0)); 
yValues.add(new Entry(quarterly2, 1)); 
yValues.add(new Entry(quarterly3, 2)); 
yValues.add(new Entry(quarterly4, 3)); 
//y轴的集合 
PieDataSet pieDataSet = new PieDataSet(yValues, "Quarterly Revenue 2014"/*显示在比例图上*/); 
pieDataSet.setSliceSpace(0f); //设置个饼状图之间的距离 
ArrayList<Integer  colors = new ArrayList<Integer (); 
// 饼图颜色 
colors.add(Color.rgb(205, 205, 205)); 
colors.add(Color.rgb(114, 188, 223)); 
colors.add(Color.rgb(255, 123, 124)); 
colors.add(Color.rgb(57, 135, 200)); 
pieDataSet.setColors(colors); 
DisplayMetrics metrics = getResources().getDisplayMetrics(); 
float px = 5 * (metrics.densityDpi / 160f); 
pieDataSet.setSelectionShift(px); // 选中态多出的长度 
PieData pieData = new PieData(xValues, pieDataSet); 
return pieData; 
} 
} 

效果图如下:

主要是一些基本属性和API的调用,具体每个API都有什么样的效果和作用,只能靠自己去尝试。后面还会陆陆续续为大家介绍MPAndroidChart其他类型的图表。

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python字符串split及rsplit方法原理详解

    split()方法通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\...

    砸漏
  • Python之变量类型和if判断方式

    字符串(string),用”,””,”’ ”’或者””” “””包裹的任意文本,比如’132′,”abc”等,

    砸漏
  • 使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例

    使用了pandas和numpy两个库,用pandas来读取数据库里面的内容,再结合使用numpy库将DataFrame数据转换成列表(注意:这里读取的数据是一列...

    砸漏
  • Android应用架构思想分析

    算算日子,工作刚好三年了。这篇开始,鄙人就要向着各种以前想起来就头大的方向努力前进了。作为在Android应用层搬砖多年的民工,首篇我想谈谈自己对架构思想的一些...

    砸漏
  • 传授了一波新人职场指南,被追着喊666

    大家好,最近在知乎里有一个同学付费咨询问我,他刚刚毕业,即将进入职场,有些紧张,不知道如何才能表现出色,问我有没有什么建议。我和他一通畅聊,当中迸发了不少很有价...

    TechFlow-承志
  • 学界 | 稳!DeepMind提出多任务强化学习新方法Distral

    选自arXiv 机器之心编译 参与:蒋思源、黄小天 深度强化学习因为复杂的环境而很难进行有效的训练,通常我们会简化环境或使用共享神经网络参数的方法进行多任务学习...

    机器之心
  • 一日一技:这个数据库用起来刚刚好

    我的公众号是使用Bear这个Mac App来写的。它在官网上写到,所有笔记数据通过SQLite来储存,如下图所示。

    青南
  • linux下.bashrc文件修改和生效

    在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件,

    smy
  • 移动端开发-iPhone、iPad的默认按钮样式等开发经验

    HTML5学堂:从JS的逻辑层来说,移动端远远不如PC平台,但是“恐怖的”兼容问题是移动端最为头疼的地方。本文介绍iPad与iPhone的默认按钮样式的处理方法...

    HTML5学堂
  • 5. Bean Validation声明式验证四大级别:字段、属性、容器元素、类

    你好,我是YourBatman。又一年1024程序员节,你快乐吗?还是在加班上线呢?

    YourBatman

扫码关注云+社区

领取腾讯云代金券