MPAndroidChart餅圖的使用
阿新 • • 發佈:2019-02-15
一、設定許可權
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies { compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'}
二、初始化圖表
private void initChart() { //餅狀圖 pieChart.setUsePercentValues(true);//設定為TRUE的話,圖示中的資料自動變為percent pieChart.getDescription().setEnabled(false); pieChart.setExtraOffsets(5, 10, 5, 5);//設定額外的偏移量(在圖表檢視周圍) pieChart.setDragDecelerationFrictionCoef(0.95f);//設定滑動減速摩擦係數,在0~1之間 //設定中間檔案 // pieChart.setCenterText(generateCenterSpannableText()); pieChart.setDrawSliceText(false);//設定隱藏餅圖上文字,只顯示百分比 pieChart.setDrawHoleEnabled(false);//設定為TRUE時,餅中心透明pieChart.setHoleColor(Color.WHITE);//設定餅中心顏色 pieChart.setTransparentCircleColor(Color.WHITE);//透明的圓 pieChart.setTransparentCircleAlpha(110);//透明度 //pieChart.setHoleRadius(58f);//中間圓的半徑佔總半徑的百分數 pieChart.setHoleRadius(0);//實心圓 //pieChart.setTransparentCircleRadius(61f);//// 半透明圈 pieChart.setDrawCenterText(true);//繪製顯示在餅圖中心的文字 pieChart.setRotationAngle(0);//設定一個抵消RadarChart的旋轉度 // 觸控旋轉 pieChart.setRotationEnabled(true);//通過觸控使圖表旋轉 pieChart.setHighlightPerTapEnabled(true);//通過點選手勢突出顯示的值 //變化監聽 // pieChart.setOnChartValueSelectedListener(this); //模擬資料 ArrayList<PieEntry> entries = new ArrayList<PieEntry>(); entries.add(new PieEntry(40, "未完成")); entries.add(new PieEntry(10, "進行中")); entries.add(new PieEntry(20, "進行中(超期)")); entries.add(new PieEntry(15, "已完成")); entries.add(new PieEntry(10, "以往成(超期)")); entries.add(new PieEntry(5, "已終止")); //設定資料 setData(entries); pieChart.animateY(1400, Easing.EasingOption.EaseInOutQuad); Legend l = pieChart.getLegend(); l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); l.setOrientation(Legend.LegendOrientation.VERTICAL); l.setDrawInside(false); l.setXEntrySpace(7f); l.setYEntrySpace(0f); l.setYOffset(0f); // 輸入標籤樣式 pieChart.setEntryLabelColor(Color.WHITE); pieChart.setEntryLabelTextSize(12f); /** * 設定比例圖 */ Legend mLegend = pieChart.getLegend(); mLegend.setPosition(Legend.LegendPosition.LEFT_OF_CHART_CENTER); //在左邊中間顯示比例圖 mLegend.setFormSize(14f);//比例塊字型大小 mLegend.setXEntrySpace(4f);//設定距離餅圖的距離,防止與餅圖重合 mLegend.setYEntrySpace(4f); //設定比例塊換行... mLegend.setWordWrapEnabled(true); mLegend.setDirection(Legend.LegendDirection.LEFT_TO_RIGHT);//設定字跟圖表的左右順序 //mLegend.setTextColor(getResources().getColor(R.color.alpha_80)); mLegend.setForm(Legend.LegendForm.SQUARE);//設定比例塊形狀,預設為方塊 // mLegend.setEnabled(false);//設定禁用比例塊 } //設定中間文字 // private SpannableString generateCenterSpannableText() { // //原文:MPAndroidChart\ndeveloped by Philipp Jahoda // SpannableString s = new SpannableString("專案"); // //s.setSpan(new RelativeSizeSpan(1.7f), 0, 14, 0); // //s.setSpan(new StyleSpan(Typeface.NORMAL), 14, s.length() - 15, 0); // // s.setSpan(new ForegroundColorSpan(Color.GRAY), 14, s.length() - 15, 0); // //s.setSpan(new RelativeSizeSpan(.8f), 14, s.length() - 15, 0); // // s.setSpan(new StyleSpan(Typeface.ITALIC), s.length() - 14, s.length(), 0); // // s.setSpan(new ForegroundColorSpan(ColorTemplate.getHoloBlue()), s.length() - 14, s.length(), 0); // return s; // } //設定資料 private void setData(ArrayList<PieEntry> entries) { PieDataSet dataSet = new PieDataSet(entries, ""); dataSet.setSliceSpace(2f);//餅圖區塊之間的距離 dataSet.setSelectionShift(5f);// //資料和顏色 Integer[] colors=new Integer[]{Color.parseColor("#d87a80"), Color.parseColor("#2ec7c9"), Color.parseColor("#b6a2de"), Color.parseColor("#5ab1ef"), Color.parseColor("#ffb980"), Color.parseColor("#8d98b3")}; //新增對應的顏色值 List<Integer> colorSum = new ArrayList<>(); for (Integer color : colors) { colorSum.add(color); } dataSet.setColors(colorSum); PieData data = new PieData(dataSet); data.setValueFormatter(new PercentFormatter()); data.setValueTextSize(11f); data.setValueTextColor(Color.BLACK); pieChart.setData(data); pieChart.highlightValues(null);//在給定的資料集中突出顯示給定索引的值 //重新整理 pieChart.invalidate(); }