最近在工作中需要用到饼状图的功能,网上查了一下MPAndroidChart开源图表库是一个很好的东西,并下载了MPAndroidChart项目运行。于是自己写了一个简单的例子,使用PieChart(饼图)的方法如下:
源码下载地址:https://github.com/PhilJay/MPAndroidChart
(一)将其导入到工程中(更多方法在github中有介绍)
这里我使用的是Android Studio,只需在Module中的build.grade文件中添加如下代码

repositories {maven { url "https://jitpack.io" }
}dependencies {compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
}

添加后编译成功即可使用
(二)在要使用的布局文件中添加PieChart

        <com.github.mikephil.charting.charts.PieChartandroid:id="@+id/pieChart"android:layout_width="match_parent"android:layout_height="match_parent"></com.github.mikephil.charting.charts.PieChart>

(三)在代码中使用PieChart

 private void initChart() {// 设置饼图是否接收点击事件,默认为truepieChart.setTouchEnabled(true);//设置饼图是否使用百分比pieChart.setUsePercentValues(true);//设置饼图右下角的文字描述pieChart.setDescription("测试");//设置饼图右下角的文字大小pieChart.setDescriptionTextSize(16);//是否显示圆盘中间文字,默认显示pieChart.setDrawCenterText(true);//设置圆盘中间文字pieChart.setCenterText("我在中间");//设置圆盘中间文字的大小pieChart.setCenterTextSize(20);//设置圆盘中间文字的颜色pieChart.setCenterTextColor(Color.WHITE);//设置圆盘中间文字的字体pieChart.setCenterTextTypeface(Typeface.DEFAULT);//设置中间圆盘的颜色pieChart.setHoleColor(Color.GREEN);//设置中间圆盘的半径,值为所占饼图的百分比pieChart.setHoleRadius(20);//设置中间透明圈的半径,值为所占饼图的百分比pieChart.setTransparentCircleRadius(40);//是否显示饼图中间空白区域,默认显示pieChart.setDrawHoleEnabled(true);//设置圆盘是否转动,默认转动pieChart.setRotationEnabled(true);//设置初始旋转角度pieChart.setRotationAngle(0);//设置比例图Legend mLegend = pieChart.getLegend();//设置比例图显示在饼图的哪个位置mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);//设置比例图的形状,默认是方形,可为方形、圆形、线性mLegend.setForm(Legend.LegendForm.CIRCLE);
//        mLegend.setXEntrySpace(7f);
//        mLegend.setYEntrySpace(5f);//设置X轴动画pieChart.animateX(1800);
//        //设置y轴动画
//        pieChart.animateY(1800);
//        //设置xy轴一起的动画
//        pieChart.animateXY(1800, 1800);//绑定数据bindData(3);// 设置一个选中区域监听pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {@Overridepublic void onValueSelected(Entry e, int dataSetIndex, Highlight h) {Toast.makeText(MainActivity.this,dataSetIndex+""+e.toString(),Toast.LENGTH_SHORT).show();}@Overridepublic void onNothingSelected() {}});}/**** @param count 分成几部分*/private void bindData(int count) {/*** nameList用来表示每个饼块上的文字内容* 如:部分一,部分二,部分三*/ArrayList<String> nameList = new ArrayList<String>();for (int i = 0; i < count; i++) {nameList.add("部分" + (i + 1));}/*** valueList将一个饼形图分成三部分,各个区域的百分比的值* Entry构造函数中* 第一个值代表所占比例,* 第二个值代表区域位置* (可以有第三个参数,表示携带的数据object)这里没用到*/ArrayList<Entry> valueList = new ArrayList<Entry>();valueList.add(new Entry(20, 0));valueList.add(new Entry(30, 1));valueList.add(new Entry(50, 2));//显示在比例图上PieDataSet dataSet = new PieDataSet(valueList, "不同颜色代表的含义");//设置个饼状图之间的距离dataSet.setSliceSpace(3f);// 部分区域被选中时多出的长度dataSet.setSelectionShift(5f);// 设置饼图各个区域颜色ArrayList<Integer> colors = new ArrayList<Integer>();colors.add(Color.RED);colors.add(Color.GREEN);colors.add(Color.BLUE);dataSet.setColors(colors);PieData data = new PieData(nameList, dataSet);//设置以百分比显示data.setValueFormatter(new PercentFormatter());//区域文字的大小data.setValueTextSize(11f);//设置区域文字的颜色data.setValueTextColor(Color.WHITE);//设置区域文字的字体data.setValueTypeface(Typeface.DEFAULT);pieChart.setData(data);//设置是否显示区域文字内容pieChart.setDrawSliceText(pieChart.isDrawSliceTextEnabled());//设置是否显示区域百分比的值for (IDataSet<?> set : pieChart.getData().getDataSets()){set.setDrawValues(!set.isDrawValuesEnabled());}// undo all highlightspieChart.highlightValues(null);pieChart.invalidate();}

柱形图使用:

 private void initBarChart() {//设置矩形阴影是否显示barChart.setDrawBarShadow(false);//设置值是否在矩形的上方显示barChart.setDrawValueAboveBar(true);//设置右下角描述barChart.setDescription("测试");//没用数据时显示barChart.setNoDataText("没有数据");// if more than 60 entries are displayed in the chart, no values will be// drawnbarChart.setMaxVisibleValueCount(60);// 设置是否可以触摸barChart.setTouchEnabled(true);// 是否可以拖拽barChart.setDragEnabled(true);// 是否可以缩放barChart.setScaleEnabled(true);// 集双指缩放barChart.setPinchZoom(false);// 设置是否显示表格颜色,矩形之间的空隙barChart.setDrawGridBackground(false);// 设置表格的的颜色,矩形之间的空隙颜色barChart.setGridBackgroundColor(Color.GRAY);//设置比例显示Legend l = barChart.getLegend();//设置比例显示在柱形图哪个位置l.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT);//设置比例显示形状,方形,圆形,线性l.setForm(Legend.LegendForm.SQUARE);//设置比例显示形状的大小l.setFormSize(15f);//设置比例显示文字的大小l.setTextSize(15f);l.setXEntrySpace(4f);//设置X轴方向上的属性XAxis xAxis = barChart.getXAxis();//设置标签显示在柱形图的上方还是下方xAxis.setPosition(XAxis.XAxisPosition.TOP);xAxis.setTypeface(Typeface.DEFAULT);//设置是否绘制表格xAxis.setDrawGridLines(false);//设置x标签的间隙xAxis.setSpaceBetweenLabels(2);//设置柱形图左边y轴方向上的属性YAxis leftAxis = barChart.getAxisLeft();leftAxis.setTypeface(Typeface.DEFAULT);//设置y轴上的标签数,boolean值为true代表必须8个leftAxis.setLabelCount(8, false);leftAxis.setValueFormatter(new DefaultYAxisValueFormatter(0));//设置标签在柱形图的哪个位置leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);//设置y轴标签之间的间距leftAxis.setSpaceTop(15f);leftAxis.setAxisMinValue(0f); // this replaces setStartAtZero(true)//设置柱形图右边y轴方向上的属性,属性含义与上面相同YAxis rightAxis = barChart.getAxisRight();rightAxis.setDrawGridLines(false);rightAxis.setTypeface(Typeface.DEFAULT);rightAxis.setLabelCount(5, true);rightAxis.setValueFormatter(new DefaultYAxisValueFormatter(0));rightAxis.setSpaceTop(15f);rightAxis.setAxisMinValue(0f); // this replaces setStartAtZero(true)// 隐藏右边的坐标轴
//        barChart.getAxisRight().setEnabled(false);// 隐藏左边的坐标轴(同上)
//        barChart.getAxisLeft().setEnabled(false);setData(15);}
/*** 绑定数据* @param count x轴上的标签数*/private void setData(int count) {//设置x轴方向上的标签数据ArrayList<String> xVals = new ArrayList<String>();for (int i = 0; i < count; i++) {xVals.add(i+"");}//设置每个矩形在y轴上的值ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();for (int i = 0; i < count; i++) {yVals1.add(new BarEntry(20*i, i));}//第一个参数是各个矩形在y轴方向上的值得集合,第二个参数为比例的文字说明BarDataSet set1 = new BarDataSet(yVals1, "不同颜色代表不同的值");//设置矩形之间的间距,参数为百分数,可控制矩形的宽度set1.setBarSpacePercent(10f);//设置矩形的颜色int colors[]={0xffff0000,0xff00ff00,0xff0000ff};set1.setColors(colors);ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();dataSets.add(set1);//设置柱形图的数据BarData data = new BarData(xVals, dataSets);data.setValueTextSize(10f);data.setValueTypeface(Typeface.DEFAULT);barChart.setData(data);}

柱形图更多属性设置查看地址http://www.ithao123.cn/content-10519924.html

饼状图(PieChart)与柱形图(BarChart)的使用相关推荐

  1. Qt绘制柱状图BarChart、饼状图PieChart、堆叠柱状图StackedChart、散点图ScatterChart

    一.效果展示 二.工程中添加charts模块 三.在工程布局文件中放一块Graphics View,然后右键提升为QChartView,每个Tab都一样.如下图 四.更改控件名,如下图所示 五.Mai ...

  2. Python 在 excel 中画 饼状图 折线图

    excel 饼状图绘制 案例1 from openpyxl import Workbook from openpyxl.chart import PieChart, Reference from op ...

  3. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞...

    2019独角兽企业重金招聘Python工程师标准>>> 把开源项目MPAndroidChart里面的折线图.柱形图.饼状图.散列图.雷达图怎么使用和一些属性详细的介绍,当我们项目 g ...

  4. Echarts动态饼状图,柱形图,关系图绘制

    1 饼状图代码(动态) //echarts图var chrNumber =[];var chrnum=[];for (var i=0;i<data.chrNum.length;i++){//通过 ...

  5. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散... http://www.apkbus.com/thread-267832-1-1.html)...

    Android之玩转MPAndroidChart让(折线图.柱形图.饼状图.散... http://www.apkbus.com/thread-267832-1-1.html) 转载于:https:/ ...

  6. canvas制作柱形图/折线图/饼状图,Konva写动态饼状图

    制作饼状图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. php生成饼状图 柱形图,求一个饼状图或柱状图php生成类或例子

    求一个饼状图或柱状图php生成类或例子 时间:2006/7/19 6:10:04 作者:佚名 人气:268 PHP代码:---------------------------------------- ...

  8. Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图

    导出段落 public void exportSummarizeWord(HttpServletResponse response, Integer id) {Summarize summarize ...

  9. ArcGis Engine 专题地图制图统计图表符号化(柱状图,饼状图)

    首先看一下如何在arcgis中制作树状图和饼状图[ArcGIS教程](95)如何在ArcGIS中制作柱状图与饼状图? - 知乎 Arcgis Engine实现方式: 1.无论是树状图,饼状图,条形图还 ...

最新文章

  1. BM提供支持云的量子计算平台,以加速创新
  2. python定义全局变量
  3. jquery学习之重要知识点
  4. php glod,基于PHP的黄金价格示例代码-六派数据
  5. Maven+SpringMVC+Dubbo+zookeeper 简单的入门demo配置
  6. cocos2d-x for wp 之Box2D的应用
  7. 与gps优缺点_浅谈用于洒水车上的液位传感器和GPS模块
  8. idea导入ssm项目_一个简洁的适合 Java 小白练手的“秒杀”项目
  9. ImportError: dlopen: cannot load any more object with static TLS 解决
  10. 中国软件离制造业还是太远
  11. 拼多多商家刚开店,哪些行为不能做?
  12. 在VMware WorkStation中安装Windows Server 2016
  13. bttnserv.exe
  14. DS1302实时时钟
  15. 小程序/公众号商城一键生成工具之weiit-saas
  16. 【水动力学】02 一维河道建模
  17. Python爬取豆瓣+数据可视化
  18. 商标中R标和TM标的区别
  19. 基于springboot+vue的开源自定义表单问卷系统
  20. ACC-5595反射内存交换机

热门文章

  1. css的div,span,img,a,map等一些常见标签使用 回顶设置
  2. ​​​​​​​CISAW信息安全保障人员认证优势
  3. 开发一个商城小程序大概多少费用?
  4. {A} + {B} (使用set)
  5. 短视频受欢迎的诀窍-锦鸿凌云
  6. 打开/关闭移动数据开关
  7. RS232/RS485接口的连续传输型数传电台
  8. nachi机器人图片_《NACHI机器人样本》.pdf
  9. 跟年轻人分享一些心得
  10. chemdraw 科学绘图软件