Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 統計圖表--第三方開源--MPAndroidChart(一),mpandroidchart

統計圖表--第三方開源--MPAndroidChart(一),mpandroidchart

編輯:關於android開發

統計圖表--第三方開源--MPAndroidChart(一),mpandroidchart


效果圖1:

效果圖2:

 

MPAndroidChart是在Android平台上開源的第三方統計圖表庫,可以繪制樣式復雜、豐富的各種統計圖表,如一般常見的折線圖、餅狀圖、柱狀圖、散點圖、金融股票中使用的的“蠟燭”圖、“泡泡”統計圖、雷達狀統計餅狀圖等等。簡言之,AndroidMPChart基本上可以滿足日常在Android平台上的統計圖表開發需要。
AndroidMPChart在github上的項目主頁: https://github.com/PhilJay/MPAndroidChart 
在自己的項目的libs中,導入其發布的jar包即可使用MPAndroidChart。MPAndroidChart發布的jar包頁面在:https://github.com/PhilJay/MPAndroidChart/releases 
AndroidMPChart使用方法:在上面的releases頁面下載最新的jar包,復制到自己的項目libs中即可使用。

代碼:

activity_main.xml:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <com.github.mikephil.charting.charts.LineChart
 7         android:id="@+id/chart"
 8         android:layout_width="match_parent"
 9         android:layout_height="match_parent" />
10 
11 </RelativeLayout>

 

MainActivity.java:

  1 package com.example.testmpandroidchart;
  2 
  3 import java.util.ArrayList;
  4 
  5 import com.github.mikephil.charting.charts.LineChart;
  6 import com.github.mikephil.charting.components.Legend;
  7 import com.github.mikephil.charting.components.Legend.LegendForm;
  8 import com.github.mikephil.charting.components.Legend.LegendPosition;
  9 import com.github.mikephil.charting.data.Entry;
 10 import com.github.mikephil.charting.data.LineData;
 11 import com.github.mikephil.charting.data.LineDataSet;
 12 import com.github.mikephil.charting.formatter.ValueFormatter;
 13 import com.github.mikephil.charting.utils.ViewPortHandler;
 14 
 15 import android.app.Activity;
 16 import android.graphics.Color;
 17 import android.os.Bundle;
 18 
 19 public class MainActivity extends Activity {
 20 
 21     @Override
 22     protected void onCreate(Bundle savedInstanceState) {
 23         super.onCreate(savedInstanceState);
 24         setContentView(R.layout.activity_main);
 25 
 26         LineChart mLineChart = (LineChart) findViewById(R.id.chart);
 27 
 28         // 制作7個數據點(沿x坐標)
 29         LineData mLineData = makeLineData(7);
 30         setCharStyle(mLineChart, mLineData, Color.WHITE);
 31     }
 32 
 33     private LineData makeLineData(int count) {
 34 
 35         // x軸顯示的數據設置
 36         ArrayList<String> x = new ArrayList<String>();
 37         for (int i = 0; i < count; i++) {
 38             x.add(i + "");
 39         }
 40 
 41         // y軸數據設置
 42         ArrayList<Entry> y = new ArrayList<Entry>();
 43         for (int i = 0; i < count; i++) {
 44             float val = (float) (Math.random() * 100);
 45             Entry entry = new Entry(val, i);
 46             y.add(entry);
 47         }
 48 
 49         // y軸數據集
 50         LineDataSet mLineDataSet = new LineDataSet(y, "測試數據");
 51 
 52         // 用y軸的集合來設置參數
 53         // 線寬
 54         mLineDataSet.setLineWidth(3.0f);
 55 
 56         // 顯示的圓形大小
 57         mLineDataSet.setCircleSize(5.0f);
 58 
 59         // 折線的顏色
 60         mLineDataSet.setColor(Color.RED);
 61 
 62         // 圓球的顏色
 63         mLineDataSet.setCircleColor(Color.BLUE);
 64 
 65         // 填充折線上數據點、圓球裡面包裹的中心空白處的顏色
 66         mLineDataSet.setCircleColorHole(Color.GREEN);
 67 
 68         // 設置mLineDataSet.setDrawHighlightIndicators(false)後,
 69         // Highlight的十字交叉的縱橫線將不會顯示,
 70         // 同時,mLineDataSet.setHighLightColor(Color.CYAN)失效。
 71         mLineDataSet.setDrawHighlightIndicators(true);
 72 
 73         // 按擊後,十字交叉線的顏色
 74         mLineDataSet.setHighLightColor(Color.RED);
 75 
 76         // 設置這項上顯示數據點的字體大小和顏色
 77         mLineDataSet.setValueTextSize(15.0f);
 78         mLineDataSet.setValueTextColor(Color.BLUE);
 79 
 80         mLineDataSet.setDrawCircleHole(true);
 81 
 82 //         // 改變折線樣式,用曲線
 83 //         // 默認是直線
 84 //         mLineDataSet.setDrawCubic(true);
 85 //         // 曲線的平滑度,值越大越平滑。
 86 //         mLineDataSet.setCubicIntensity(0.3f);
 87 //        
 88 //         // 填充曲線下方的區域設置,黃色和透明
 89 //         mLineDataSet.setDrawFilled(true);
 90 //         mLineDataSet.setFillColor(Color.YELLOW);
 91 //         mLineDataSet.setFillAlpha(128);
 92          
 93         // 設置折線上顯示數據的格式。如果不設置,將默認顯示float數據格式。
 94         mLineDataSet.setValueFormatter(new ValueFormatter() {
 95 
 96             @Override
 97             public String getFormattedValue(float value, Entry entry, int dataSetIndex,
 98                     ViewPortHandler viewPortHandler) {
 99                 int n = (int) value;
100                 String s = "y=" + n;
101                 return s;
102             }
103         });
104 
105         ArrayList<LineDataSet> mLineDataSets = new ArrayList<LineDataSet>();
106         mLineDataSets.add(mLineDataSet);
107 
108         LineData mLineData = new LineData(x, mLineDataSets);
109         return mLineData;
110     }
111 
112     private void setCharStyle(LineChart mLineChart, LineData mLineData, int color) {
113         // 是否在折線圖上添加邊框
114         mLineChart.setDrawBorders(true);
115 
116         // 數據描述
117         mLineChart.setDescription("描述信息在這裡");
118         mLineChart.setDescriptionTextSize(30.0f);
119         mLineChart.setDescriptionColor(Color.BLUE);
120 
121         // 如果沒有數據的時候,會顯示這個,類似listview的emtpyview
122         mLineChart.setNoDataTextDescription("如果傳給MPAndroidChart的數據為空,那麼你將看到這段文字");
123 
124         // 是否繪制表格內背景顏色。
125         // 如果mLineChart.setDrawGridBackground(false),
126         // 那麼mLineChart.setGridBackgroundColor(Color.CYAN)將失效;
127         mLineChart.setDrawGridBackground(false);
128         mLineChart.setGridBackgroundColor(Color.GRAY);
129 
130         // 觸摸
131         mLineChart.setTouchEnabled(true);
132 
133         // 拖拽
134         mLineChart.setDragEnabled(true);
135 
136         // 縮放
137         mLineChart.setScaleEnabled(true);
138         mLineChart.setPinchZoom(true);
139 
140         // 設置背景
141         mLineChart.setBackgroundColor(color);
142 
143         // 設置x,y的數據
144         mLineChart.setData(mLineData);
145 
146         // 設置比例圖標示,就是那個一組y的value的
147         Legend mLegend = mLineChart.getLegend();
148         mLegend.setPosition(LegendPosition.BELOW_CHART_CENTER);
149         mLegend.setForm(LegendForm.CIRCLE);// 樣式,默認為方形
150         mLegend.setFormSize(20.0f);// 樣式圖標大小
151         mLegend.setTextColor(Color.BLUE);
152         mLegend.setTextSize(20.0f);// 設置字體大小
153 
154         // 沿x軸動畫,時間2000毫秒。
155         mLineChart.animateX(2000);
156     }
157 
158 }

 

實現圖片2的效果只需把注釋的代碼重新啟用:

 1 //         // 改變折線樣式,用曲線
 2 //         // 默認是直線
 3 //         mLineDataSet.setDrawCubic(true);
 4 //         // 曲線的平滑度,值越大越平滑。
 5 //         mLineDataSet.setCubicIntensity(0.3f);
 6 //        
 7 //         // 填充曲線下方的區域設置,黃色和透明
 8 //         mLineDataSet.setDrawFilled(true);
 9 //         mLineDataSet.setFillColor(Color.YELLOW);
10 //         mLineDa

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved