MPAndroidChart 的简单应用及各种属性的设置

最近做了几个项目都需要用到数据的统计与分析 , 所有这几天就学习了一下MPAndroidChart , 把整理的一些知识点都分享一下, 以供大家参考.

一 . MPAndroidChart 包含哪些图表 ?

1. 折线图 LineChart
2. 条形图 BarChart
3. 条形折线图 Combined-Chart
4. 圆饼图 PieChart
5. 雷达图 ScatterChart
6. K线图 CandleStickChart
7. 泡泡图 BubbleChart
8. 网状图 RadarChart

9. 多组柱状图 MutiBarChart

二 , xml的引用 

<com.github.mikephil.charting.charts.BarChart
    android:id="@+id/chart1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/seekBar1" />

// 获取控件

mChart = (BarChart) findViewById(R.id.chart1);

三 , 对mChart进行设置 

//对选中柱形图的值的展示

mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
    @Override
    public void onValueSelected(Entry e, Highlight h) {
 //选中值的展示
    }

    @Override
    public void onNothingSelected() {

    }
});

mChart.getDescription().setEnabled(false); //是否可以描述
mChart.setMaxVisibleValueCount(60); // 如果在图表中显示超过60个条目,则不会绘制任何值
mChart.setDrawBarShadow(false); // 是否展示柱形图的阴影
mChart.setDrawValueAboveBar(true);// 值是否显示在柱形图的顶部
mChart.setPinchZoom(false);  //缩放现在只能在x轴和y轴分开完成
mChart.setDrawGridBackground(false); //画网格背景

// 对X轴的设置

XAxis xAxis = mChart.getXAxis();
xAxis.setTypeface(mTfLight); //设置字体
xAxis.setGranularity(1f);         //间隔尺寸
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); //X轴在底部还是在顶部
xAxis.setCenterAxisLabels(true);  // X轴的标签是不是居中
xAxis.setLabelRotationAngle(0f); // 标签文字旋转的角度

xAxis.setValueFormatter(new IAxisValueFormatter() {
    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        return String.valueOf((int) value);
        }
});

//对Y轴的设置 左边的Y轴 

YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setTypeface(mTfLight);
leftAxis.setLabelCount(8, false); 
leftAxis.setPosition(YAxisLabelPosition.OUTSIDE_CHART); //
leftAxis.setSpaceTop(15f);

leftAxis.setAxisMinimum(0f); // 从0坐标开始

leftAxis.setValueFormatter(new LargeValueFormatter());  //数值的格式标准

//右边的Y轴

YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
rightAxis.setTypeface(mTfLight);
rightAxis.setLabelCount(8, false);
rightAxis.setSpaceTop(15f);

rightAxis.setAxisMinimum(0f); //从0坐标开始

leftAxis.setValueFormatter(new LargeValueFormatter()); //数值的格式标准

//图例 (图标的说明)

Legend l = mChart.getLegend();
l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM); //位置
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
l.setDrawInside(false);
l.setForm(LegendForm.SQUARE);
l.setFormSize(9f);
l.setTextSize(11f);

l.setXEntrySpace(4f);

//数据的设置

int count = 10, 
float range = 100

private void setData(int count, float range) {

        float start = 1f;
        ArrayList yVals1 = new ArrayList();

        for (int i = (int) start; i < start + count + 1; i++) {
            float mult = (range + 1);
            float val = (float) (Math.random() * mult);

            if (Math.random() * 100 < 25) {
                yVals1.add(new BarEntry(i, val, getResources().getDrawable(R.drawable.star)));
            } else {
                yVals1.add(new BarEntry(i, val));
            }
        }

        BarDataSet set1;

        if (mChart.getData() != null &&
                mChart.getData().getDataSetCount() > 0) {
            set1 = (BarDataSet) mChart.getData().getDataSetByIndex(0);
            set1.setValues(yVals1);
            mChart.getData().notifyDataChanged();
            mChart.notifyDataSetChanged();
        } else {
            set1 = new BarDataSet(yVals1, "The year 2017");
            set1.setDrawIcons(false);
            set1.setColors(ColorTemplate.MATERIAL_COLORS);

            ArrayList dataSets = new ArrayList();
            dataSets.add(set1);

            BarData data = new BarData(dataSets);
            data.setValueTextSize(10f);
            data.setValueTypeface(mTfLight);
            data.setBarWidth(0.9f);

            mChart.setData(data);
        }

    }


你可能感兴趣的:(技术)