Android中MPAndroidChart使用Demo

来源:互联网 发布:河南省统计局数据采集 编辑:程序博客网 时间:2024/04/29 21:22

由于Google提供的AChartEngine的功能强大但使用起来较为复杂,MPAndroidChart同样能够实现一些效果较好的直方图,折线图,饼图等绘制,使用也较为简单轻便;

介绍MPAndroidChart

主要的Api方法:

  • setDescription(String desc) : 设置表格的描述
  • setDescriptionTypeface(Typeface t) :自定义表格中显示的字体
  • setDrawYValues(boolean enabled) : 设置是否显示y轴的值的数据
  • setValuePaintColor(int color) :设置表格中y轴的值的颜色,但是必须设置setDrawYValues(true)
  • setValueTypeface(Typeface t):设置字体
  • setValueFormatter(DecimalFormat format) : 设置显示的格式
  • setPaint(Paint p, int which) : 自定义笔刷
  • public ChartData getDataCurrent() :返回ChartData对象当前显示的图表。它包含了所有信息的显示值最小和最大值等
  • public float getYChartMin() : 返回当前最小值
  • public float getYChartMax() : 返回当前最大值
  • public float getAverage() : 返回所有值的平均值。
  • public float getAverage(int type) : 返回平均值
  • public PointF getCenter() : 返回中间点
  • public Paint getPaint(int which) : 得到笔刷
  • setTouchEnabled(boolean enabled) : 设置是否可以触摸,如为false,则不能拖动,缩放等
  • setDragScaleEnabled(boolean enabled) : 设置是否可以拖拽,缩放
  • setOnChartValueSelectedListener(OnChartValueSelectedListener l) : 设置表格上的点,被点击的时候,的回调函数
  • setHighlightEnabled(boolean enabled) : 设置点击value的时候,是否高亮显示
  • public void highlightValues(Highlight[] highs) : 设置高亮显示
  • saveToGallery(String title) : 保存图表到图库中
  • saveToPath(String title, String pathOnSD) : 保存.
  • setScaleMinima(float x, float y) : 设置最小的缩放
  • centerViewPort(int xIndex, float val) : 设置视口
  • fitScreen() : 适应屏幕

下面是一个在自己项目上使用的小Demo

  • xml文件中
<com.github.mikephil.charting.charts.PieChart        android:layout_marginTop="20dp"        android:id="@+id/spread_pie_chat"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@color/Null"        android:layout_weight="1"        android:layout_gravity="center_horizontal"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true">    </com.github.mikephil.charting.charts.PieChart>
  • java文件中

    /** -    Function:    drawPie() -    Description:    绘制饼状图 **/public void drawPie(){    //名字    ArrayList<String> names=new ArrayList<String>();    names.add("缺勤");    names.add("出勤");    //大小    ArrayList<Entry> sizes=new ArrayList<Entry>();    sizes.add(new Entry(10,0));    sizes.add(new Entry(44,1));    //颜色    ArrayList<Integer> colors=new ArrayList<Integer>();    colors.add(Color.parseColor("#FE4365"));    colors.add(Color.parseColor("#00FF7F"));    PieDataSet pieDataSet=new PieDataSet(sizes,"");//参数:颜色栏显示颜色目录    pieDataSet.setValueTextSize(10f);    //pieDataSet.setDrawValues(true);//是否在块上面显示值以及百分百    //pieDataSet.setSliceSpace(0f);//块间距    pieDataSet.setColors(colors);    //DisplayMetrics metrics=this.getResources().getDisplayMetrics();    PieData pieData=new PieData(names,pieDataSet);    pieChart.setHoleRadius(120f);  //半径    pieChart.setTransparentCircleRadius(50f); // 半透明圈    //pieChart.setTransparentCircleRadius(0f);//设置大圆里面透明小圆半径,和洞不是一个圆    pieChart.setDrawHoleEnabled(true);    pieChart.setHoleColorTransparent(true);//设置中心洞是否透明:true为黑,false为白    pieChart.setHoleRadius(50f);//设置大圆里面的无色圆的半径(洞...)    pieChart.setCenterText("本次课堂");  //饼状图中间的文字    pieChart.setDescription("");//参数:右下角显示图形描述    //pieChart.setDrawCenterText(false);//不显示图中心文字    //pieChart.setCenterText("traffic graph");//图中心文字    pieChart.setRotationEnabled(true);//手动旋转    //pieChart.setDrawMarkerViews(false);    //pieChart.setDrawSliceText(false);//块的文本是否显示    pieChart.setData(pieData);    Legend legend=pieChart.getLegend();    legend.setEnabled(true);//是否显示图形说明,必须要放在setData后,否则出错    legend.setTextSize(15f);    //两个参数有不同的意思:    //durationMillisX:每个块运行到固定初始位置的时间    //durationMillisY: 每个块到绘制结束时间    pieChart.animateXY(1000, 1000);//设置动画(参数为时间)}/** -   Function:    drawHistogram() -   Description:    绘制柱状图 **/public void drawHistogram(){    //名称    ArrayList<String> mMonths=new ArrayList<String>();    mMonths.add("3月3日");    mMonths.add("3月6日");    mMonths.add("3月10日");    mMonths.add("3月13日");    mMonths.add("3月17日");    mMonths.add("3月20日");    mMonths.add("3月24日");    //大小(高低)    ArrayList<BarEntry> sizes=new ArrayList<BarEntry>();    sizes.add(new BarEntry(50,0));    sizes.add(new BarEntry(51,1));    sizes.add(new BarEntry(52,2));    sizes.add(new BarEntry(49,3));    sizes.add(new BarEntry(54,4));    sizes.add(new BarEntry(54,5));    sizes.add(new BarEntry(45,6));    //颜色    BarDataSet barDataSet=new BarDataSet(sizes,"");    barDataSet.setValueTextSize(10f);    ArrayList<Integer> colors = new ArrayList<Integer>();    for(int i = 0;i < 7 ;i++){        colors.add(Color.parseColor(color[i]));    }//颜色设置    barDataSet.setColors(colors);    BarData barData=new BarData(mMonths,barDataSet);    barChart.setDescription("历史出勤统计图");//数据描述    barChart.setDescriptionTextSize(12f);    barChart.setNoDataTextDescription("No data for the chart");// 如果没有数据的时候,会显示这个,类似ListView的EmptyView    barChart.setPinchZoom(false);// 集双指缩放    barChart.setScaleEnabled(false);//手动缩放效果    barChart.setPinchZoom(false);//xy轴同时缩放,和setScaleEnabled一起使用    barChart.setDrawGridBackground(false);    //barChart.setDrawBorders(false);//画布边    //barChart.setVisibleXRange(7);    //barChart.setMaxVisibleValueCount(6);    barChart.setDrawBarShadow(false);//设置矩形阴影不显示    //barChart.setBackgroundColor(Color.parseColor("#FFFFFF"));//设置背景颜色    //barChart.setMinOffset(0);//=padding    barChart.setDrawValueAboveBar(true);    barChart.setData(barData);    barChart.animateXY(1000, 1000);//设置动画    Legend legend=barChart.getLegend();//取消图形说明    legend.setEnabled(false);    //获取X轴坐标    XAxis xAxis=barChart.getXAxis();    xAxis.setPosition(XAxisPosition.BOTTOM);//X坐标位于图标底部    xAxis.setDrawGridLines(false);    xAxis.setSpaceBetweenLabels(2);//设置名字names之间的间距    //xAxis.    //获取Y轴右坐标    YAxis yAxisR=barChart.getAxisRight();    yAxisR.setEnabled(true);    yAxisR.setDrawGridLines(true);    //获取Y轴左坐标    YAxis yAxisL=barChart.getAxisLeft();    yAxisL.setEnabled(true);    yAxisL.setDrawGridLines(true);}

    效果图

    这里写图片描述

对于简单图表需求MPAndroidChart都可以很好的解决,大家可以试试

原创粉丝点击