卓尔高考网

MPchart使用详解及详细属性

篇首语:本文由小编为大家整理,主要介绍了MPchart使用详解及详细属性相关的知识,希望对你有一定的参考价值。

项目源代码:https://github.com/libin7278/MpChart

第一步 添加依赖或导入Library

    dependencies     compile fileTree(dir: "libs", include: ["*.jar"])    compile "com.android.support:appcompat-v7:23.2.0"    compile "com.github.PhilJay:MPAndroidChart:v2.2.3"

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

第二步 布局文件

         

第三步 MainActivity代码

package com.tunshu.mydemo;import android.app.Activity;import android.os.Bundle;import com.github.mikephil.charting.charts.BarChart;import com.github.mikephil.charting.data.BarData;import com.github.mikephil.charting.data.BarDataSet;import com.github.mikephil.charting.data.BarEntry;import java.util.ArrayList;public class MainActivity extends Activity     private BarChart day_fragment_bar_chart;    private BarData mBarData;    @Override    protected void onCreate(Bundle savedInstanceState)         super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        day_fragment_bar_chart= (BarChart) findViewById(R.id.day_fragment_bar_chart);//getBarData(X轴坐标个数, X所对应的值也就是Y值)        mBarData = getBarData(24, 10);        showBarChart(day_fragment_bar_chart, mBarData);    /** *用来处理视图的方法 */    private void showBarChart(BarChart barChart, BarData barData)     /** *用来处理数据的方法 */    private BarData getBarData(int count, float range)         ArrayList xValues = new ArrayList();        for (int i = 0; i < count; i++)             xValues.add(i + "");                ArrayList yValues = new ArrayList();        for (int i = 0; i < count; i++)             float value = (float) (Math.random() * range/*100以内的随机数*/) + 3;            yValues.add(new BarEntry(value, i));                // y轴的数据集合        BarDataSet barDataSet = new BarDataSet(yValues, "collection");        ArrayList barDataSets = new ArrayList();        barDataSets.add(barDataSet); // add the datasets        BarData barData = new BarData(xValues, barDataSet);        return barData;    

在MainActivity中已经封装好了处理数据和视图的方法;

第四步 详细属性介绍

private void showBarChart(BarChart barChart, BarData barData)         // 如果没有数据的时候,会显示这个,类似ListView的EmptyView        barChart.setNoDataTextDescription("You need to provide data for the chart.");    

private void showBarChart(BarChart barChart, BarData barData)         barChart.setData(barData); // 设置数据    

barChart.setDrawBorders(true); //是否在折线图上添加边框

barChart.setDescription("数据描述");// 数据描述barChart.setDescriptionPosition(100,20);//数据描述的位置barChart.setDescriptionColor(Color.GRAY);//数据的颜色barChart.setDescriptionTextSize(40);//数据字体大小

如果此处不想要描述必须要设置 barChart.setDescription("");不然会显示默认的 Description。

barChart.setDrawGridBackground(true); // 是否显示表格颜色barChart.setGridBackgroundColor(Color.RED); // 表格的的颜色

barChart.setTouchEnabled(false); // 设置是否可以触摸barChart.setDragEnabled(false);// 是否可以拖拽barChart.setScaleEnabled(false);// 是否可以缩放barChart.setPinchZoom(false);//y轴的值是否跟随图表变换缩放;如果禁止,y轴的值会跟随图表变换缩放
barChart.setBackgroundColor(Color.BLACK);// 设置整个图表控件的背景

 barChart.setDrawBarShadow(true);//柱状图没有数据的部分是否显示阴影效果

barChart.setDrawValueAboveBar(false);//柱状图上面的数值是否在柱子上面

//是否显示竖直标尺线barChart.getXAxis().setDrawGridLines(false);


//设置横坐标显示的间隔数barChart.getXAxis().setLabelsToSkip(4);

//设置横坐标倾斜角度barChart.getXAxis().setLabelRotationAngle(20);

//设置横坐标之间的间隔距离 float值 //不能与setLabelsToSkip()一起使用否则失效barChart.getXAxis().setSpaceBetweenLabels(50);

//是否显示X轴数值//默认是truebarChart.getXAxis().setDrawLabels(false);

//右侧是否显示Y轴数值barChart.getAxisRight().setDrawLabels(false);

//是否显示最右侧竖线barChart.getAxisRight().setEnabled(false);

//自定义Y轴文字样式YAxisValueFormatter custom = new MyYAxisValueFormatter();baChart.getAxisLeft().setValueFormatter(custom);
 public class MyYAxisValueFormatter implements YAxisValueFormatter         private DecimalFormat mFormat;        public MyYAxisValueFormatter()             mFormat = new DecimalFormat("###,###,###,##0");                @Override        public String getFormattedValue(float value, YAxis yAxis)             return mFormat.format(value) + "K";            

//设置比例图标的位置  barChart.getLegend().setPosition(Legend.LegendPosition.RIGHT_OF_CHART);//设置比例图标和文字之间的位置方向barChart.getLegend().setDirection(Legend.LegendDirection.RIGHT_TO_LEFT);barChart.getLegend().setTextColor(Color.RED);

//设置动画barChart.animateXY(2000,3000);
// y轴的数据集合BarDataSet barDataSet = new BarDataSet(yValues, "collection");        barDataSet.setBarSpacePercent(80);barDataSet.setVisible(true);//是否显示柱状图柱子barDataSet.setColor(Color.RED);//设置柱子颜色barDataSet.setDrawValues(false);//是否显示柱子上面的数值
package com.tunshu.mydemo;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import com.github.mikephil.charting.charts.BarChart;import com.github.mikephil.charting.components.Legend;import com.github.mikephil.charting.components.XAxis;import com.github.mikephil.charting.components.YAxis;import com.github.mikephil.charting.data.BarData;import com.github.mikephil.charting.data.BarDataSet;import com.github.mikephil.charting.data.BarEntry;import com.github.mikephil.charting.formatter.YAxisValueFormatter;import java.text.DecimalFormat;import java.util.ArrayList;public class MainActivity extends Activity     private BarChart day_fragment_bar_chart;    private BarData mBarData;    @Override    protected void onCreate(Bundle savedInstanceState)         super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        day_fragment_bar_chart= (BarChart) findViewById(R.id.day_fragment_bar_chart);        mBarData = getBarData(24, 10);        showBarChart(day_fragment_bar_chart, mBarData);        private void showBarChart(BarChart barChart, BarData barData)         // 如果没有数据的时候,会显示这个,类似ListView的EmptyView        barChart.setNoDataTextDescription("You need to provide data for the chart.");        barChart.setData(barData); // 设置数据        barChart.setDrawBorders(false); //是否在折线图上添加边框        barChart.setDescription("数据描述");// 数据描述        barChart.setDescriptionPosition(100,20);//数据描述的位置        barChart.setDescriptionColor(Color.RED);//数据的颜色        barChart.setDescriptionTextSize(40);//数据字体大小        barChart.setDrawGridBackground(false); // 是否显示表格颜色        barChart.setGridBackgroundColor(Color.RED); // 表格的的颜色        //barChart.setBackgroundColor(Color.BLACK);// 设置整个图标控件的背景        barChart.setDrawBarShadow(false);//柱状图没有数据的部分是否显示阴影效果        barChart.setTouchEnabled(false); // 设置是否可以触摸        barChart.setDragEnabled(false);// 是否可以拖拽        barChart.setScaleEnabled(false);// 是否可以缩放        barChart.setPinchZoom(false);//y轴的值是否跟随图表变换缩放;如果禁止,y轴的值会跟随图表变换缩放        barChart.setDrawValueAboveBar(true);//柱状图上面的数值显示在柱子上面还是柱子里面        barChart.getXAxis().setDrawGridLines(false);//是否显示竖直标尺线        barChart.getXAxis().setLabelsToSkip(11);//设置横坐标显示的间隔//        barChart.getXAxis().setLabelRotationAngle(20);//设置横坐标倾斜角度//        barChart.getXAxis().setSpaceBetweenLabels(50);        barChart.getXAxis().setDrawLabels(true);//是否显示X轴数值        barChart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);//设置X轴的位置 默认在上方        barChart.getAxisRight().setDrawLabels(false);//右侧是否显示Y轴数值        barChart.getAxisRight().setEnabled(false);//是否显示最右侧竖线        barChart.getAxisRight().setDrawAxisLine(true);        barChart.getAxisLeft().setDrawAxisLine(false);        barChart.getXAxis().setDrawAxisLine(true);        YAxisValueFormatter custom = new MyYAxisValueFormatter();//自定义Y轴文字样式        barChart.getAxisLeft().setValueFormatter(custom);        barChart.getLegend().setPosition(Legend.LegendPosition.RIGHT_OF_CHART);//设置比例图标的位置        barChart.getLegend().setDirection(Legend.LegendDirection.RIGHT_TO_LEFT);//设置比例图标和文字之间的位置方向        barChart.getLegend().setTextColor(Color.RED);        barChart.animateXY(2000,3000);        private BarData getBarData(int count, float range)         ArrayList xValues = new ArrayList();        for (int i = 0; i < count; i++)             xValues.add(i + "");                ArrayList yValues = new ArrayList();        for (int i = 0; i < count; i++)             float value = (float) (Math.random() * range/*100以内的随机数*/) + 3;            yValues.add(new BarEntry(value, i));                // y轴的数据集合        BarDataSet barDataSet = new BarDataSet(yValues, "collection");        barDataSet.setBarSpacePercent(80);        barDataSet.setVisible(true);//是否显示柱状图柱子        barDataSet.setColor(Color.RED);//设置柱子颜色        barDataSet.setDrawValues(false);//是否显示柱子上面的数值        ArrayList barDataSets = new ArrayList();        barDataSets.add(barDataSet); // add the datasets        BarData barData = new BarData(xValues, barDataSet);        return barData;        public class MyYAxisValueFormatter implements YAxisValueFormatter         private DecimalFormat mFormat;        public MyYAxisValueFormatter()             mFormat = new DecimalFormat("###,###,###,##0");                @Override        public String getFormattedValue(float value, YAxis yAxis)             return mFormat.format(value) + "K";            

//设置Y轴显示数量barChart.getAxisLeft().setLabelCount(2,false);

扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

公众号回复“资料获取”,获取更多干货哦~

有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

以上是关于MPchart使用详解及详细属性的主要内容,如果未能解决你的问题,请参考以下文章

您可能还会对下面的文章感兴趣: