圖表開源項目MPAndroidChart

MPAndroidChart是GitHub上的一個開源框架,主要用於快速實現Android端的圖表問題,包括線性圖、柱狀圖、餅狀圖等等;
MPAndroidChart的引入只需要在Android Studio 的gradle文件裏面添加下面代碼即可:

repositories {
    maven { url "https://jitpack.io" }
}

dependencies {
    compile 'com.github.PhilJay:MPAndroidChart:v2.2.3'
}

(一)MPAndroidChart —— 餅狀圖:

在layout裏面添加餅狀圖控件:

<com.github.mikephil.charting.charts.PieChart
android:id="@+id/mpchart_piechart"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_gravity="center"
/>

在java中的代碼:

package com.zerom.mtest;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.DisplayMetrics;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;

import java.util.ArrayList;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MpChart extends Activity {

@Bind(R.id.mpchart_piechart)
    PieChart mPieChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mpchart);
ButterKnife.bind(this);

PieData mPieData = getPieData();
mChart(mPieChart, mPieData);

}

private void mChart(PieChart pieChart, PieData pieData) {


// pieChart.setHoleColor(Color.parseColor("#000000"));   //設置中間圓盤顏色
// pieChart.setDescriptionTextSize(22);   //右下角說明文字大小

pieChart.setHoleColor(Color.TRANSPARENT);

pieChart.setHoleRadius(60f);  //半徑
pieChart.setTransparentCircleRadius(64f); // 半透明圈
//pieChart.setHoleRadius(0)  //實心圓


//pieChart.setDescription("試衣率餅狀圖");  //底部右下角文字

// mChart.setDrawYValues(true);
pieChart.setDrawCenterText(true);  //餅狀圖中間可以添加文字
pieChart.setCenterTextSize(15);    //餅狀圖中間文字
pieChart.setDrawHoleEnabled(true);

pieChart.setRotationAngle(90); // 初始旋轉角度

pieChart.setRotationEnabled(true); // 可以手動旋轉

pieChart.setUsePercentValues(true);  //顯示成百分比
pieChart.setCenterText("各類顏色試衣率");  //餅狀圖中間的文字

//設置數據
pieChart.setData(pieData);

Legend mLegend = pieChart.getLegend();  //設置比例圖
mLegend.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);  //最右邊顯示
//      mLegend.setForm(LegendForm.LINE);  //設置比例圖的形狀,默認是方形
mLegend.setXEntrySpace(7f);
mLegend.setYEntrySpace(5f);

pieChart.animateXY(1000, 1000);  //設置動畫

}

private PieData getPieData() {

        String str[] = {"灰色", "淺藍", "粉紅", "藍色", "紅色", "黑色"};
ArrayList<String> xData = new ArrayList<String>();  //xData用來表示每個餅塊上的內容

for (int i = 0; i < str.length; i++) {
            xData.add(str[i]);
}

        ArrayList<Entry> yData = new ArrayList<Entry>();  //yData用來表示封裝每個餅塊的實際數據

/**
         * 將一個餅形圖分成六部分, 六部分的數值比例爲9:6:34:38:6:7
         */

float mdata[] = {9,6,34,38,6,7};

        for (int i = 0; i < mdata.length; i++) {
            yData.add(new Entry(mdata[i],i));
}
//y軸的集合
PieDataSet pieDataSet = new PieDataSet(yData, "" /*"各類顏色試衣率 2016"顯示在比例圖上*/);
pieDataSet.setSliceSpace(0f); //設置個餅狀圖之間的距離

ArrayList<Integer> colors = new ArrayList<Integer>();

        int mColor[] = {Color.rgb(205, 205, 205),Color.rgb(114, 188, 223),Color.rgb(255, 123, 124),Color.rgb(57, 135, 200),
Color.parseColor("#F00000"),Color.parseColor("#000000")};
// 餅圖顏色
for (int i = 0; i < mColor.length ; i++) {
            colors.add(mColor[i]);
}
        pieDataSet.setColors(colors);

//餅圖中間的文字字體顏色以及大小
pieDataSet.setValueTextColor(Color.parseColor("#FFFFFF"));
pieDataSet.setValueTextSize(10);

DisplayMetrics metrics = getResources().getDisplayMetrics();
        float px = 5 * (metrics.densityDpi / 160f);
pieDataSet.setSelectionShift(px); // 選中態多出的長度

PieData pieData = new PieData(xData, pieDataSet);

        return pieData;
}

}

效果圖如下:
這裏寫圖片描述

發佈了61 篇原創文章 · 獲贊 72 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章