当前位置: 首页 > article >正文

饼状图(PieChart)与柱形图(BarChart)的使用

饼状图(PieChart)与柱形图(BarChart)的使用

标签: PieChart饼状图图表柱状图BarChart
3771人阅读 评论(0) 收藏 举报
分类:
作者同类文章 X

    最近在工作中需要用到饼状图的功能,网上查了一下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'
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    添加后编译成功即可使用
    (二)在要使用的布局文件中添加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>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (三)在代码中使用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();}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128

    柱形图使用:

     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);}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    /*** 绑定数据* @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);}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

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

    0
    0
    相关文章推荐
    • MPchart使用详解及详细属性(一)
    • MPAndroidChart使用(BarChart为例)
    • <Android 应用 之路> MPAndroidChart~BarChart
    • MPAndroidChart使用之Bar chart
    • MPAndroidChart 教程:概述
    • iOS使用Charts框架绘制—柱形图
    • danielgindi/Charts柱形图barChartView使用
    • JfreeChart(3)-------BarChart的简单使用
    • Android图表控件MPAndroidChart——柱状图BarChart的使用(多条柱状图)
    • Android MPAndroidChart之PieChart和数据结构以及模型【5】
    http://www.lryc.cn/news/2416368.html

    相关文章:

  • 【视频编解码】H264入门
  • 你们大学还用Protel 99 SE、51单片机吗?
  • ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务【解决思路】
  • 【小呆的力学笔记】弹塑性力学的初步认知三:广义胡克定律
  • linux mrtg 命令,linux服务器之流量监控(MRTG)
  • 【修复版】免费微信小游戏源码h5赛马php网页开源可二次开发,附安装教程
  • css单线边框_css border-collapse设置表格单线边框和双线边框
  • Linux AVG ANTIVIRUS FREE使用介绍
  • CPE上的STUN和TR069功能详解和实验
  • Divx编解码器的研究与设计
  • 系统结构期末复习(四)指令级并行
  • deleteRow() 连续删除多行
  • js发送邮件
  • 怎么查看文件的MD5码
  • 一、 QTP的前世今生
  • 基于VirtualBox虚拟机安装Ubuntu图文教程
  • jersey 入门示例_Jersey Web Service Hello World Java示例
  • 12款国内外企业协作工具推荐
  • SEO数据监控技巧都有哪些?
  • 如何优化网页加载速度?
  • 如何利用Python监控你女/男朋友每天都在浏览什么网站?
  • 表白,整人,无门槛,娱乐代码
  • Mac+virtualbox安装win7
  • NRF24L01 无线模块
  • CSS min-height 属性
  • STM32F103实验定时器
  • javascript——JS 实现下拉菜单
  • 消费者行为分析模型
  • eXtremeComponents指南
  • 做个计算器--生成注册码