解析Android上強大的圖表庫MPAndroidChart
條形圖和線形圖的組合圖
一圖勝千文,純粹的資料枯燥、無聊,讓人看不下去,改變一下形式,用圖表裝飾一下,立馬有趣多了。既然有這樣的外部需求,Android世界裡肯定要有圖表庫才行,今天解析的就是其中最強大的一個MPAndroidChart。
核心功能
- 支援以下圖表:
- Line Chart(線圖)
- Bar Chart(條形圖,又稱柱狀圖)
- Combined Chart(組合圖:線性+條形)
- Pie Chart(餅狀圖)
- Scatter Chart(散點圖)
- Bubble Chart(氣泡圖)
- Stacked Bar Chart(堆積條形圖)
- Candle Stick Chart(蠟燭圖)
- Cubic Line Chart(立方擬合的折線圖)
- Radar Chart(雷達圖)
- Realtime Chart(實時折線圖)
- Sinus Bar Chart(正弦柱狀圖)
- 支援以下操作和設定:
- 支援x,y軸縮放
- 支援拖拽
- 支援手指滑動
- 支援高亮顯示
- 支援儲存圖表到檔案中
- 支援從檔案(txt)中讀取資料
- 預先定義顏色模板
- 自動生成標註
- 支援自定義x,y軸的顯示標籤
- 支援x,y軸動畫
- 支援x,y軸設定最大值和附加資訊
- 支援自定義字型,顏色,背景,手勢,虛線等
整合和使用
總共有四種方式整合,推薦直接用Gradle依賴
- 在project根目錄的build.gradle新增中央庫地址
allprojects { repositories { maven { url "https://jitpack.io"
-
在專案
build.gradle
中新增相關依賴:dependencies { compile 'com.github.PhilJay:MPAndroidChart:v3.0.0-beta1' }
-
在xml檔案定義圖表型別,比如
LineChart, BarChart, ScatterChart, CandleStickChart, PieChart, BubbleChart or RadarChart
<com.github.mikephil.charting.charts.LineChart android:id="@+id/chart1" android:layout_width
-
基礎設定
mChart = (LineChart) findViewById(R.id.chart1); mChart.setOnChartGestureListener(this); mChart.setOnChartValueSelectedListener(this); mChart.setDrawGridBackground(false); // no description text mChart.setDescription(""); mChart.setNoDataTextDescription("You need to provide data for the chart."); // enable touch gestures mChart.setTouchEnabled(true); // enable scaling and dragging mChart.setDragEnabled(true); mChart.setScaleEnabled(true); // mChart.setScaleXEnabled(true); // mChart.setScaleYEnabled(true); // if disabled, scaling can be done on x- and y-axis separately mChart.setPinchZoom(true); // set an alternative background color // mChart.setBackgroundColor(Color.GRAY); // create a custom MarkerView (extend MarkerView) and specify the layout // to use for it MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view); // set the marker to the chart mChart.setMarkerView(mv);
-
設定資料來源:各種圖表的資料不太一致,對於LineChart而言,就是一系列的(x,y)
/** * 設定模擬資料 * @param count 模擬的個數 * @param range 資料的範圍 */ private void setData(int count, float range) { ArrayList<Entry> values = new ArrayList<Entry>(); for (int i = 0; i < count; i++) { float val = (float) (Math.random() * range) + 3; values.add(new Entry(i, val)); } LineDataSet set1; if (mChart.getData() != null && mChart.getData().getDataSetCount() > 0) { set1 = (LineDataSet)mChart.getData().getDataSetByIndex(0); set1.setValues(values); mChart.getData().notifyDataChanged(); mChart.notifyDataSetChanged(); } else { // create a dataset and give it a type set1 = new LineDataSet(values, "DataSet 1"); // set the line to be drawn like this "- - - - - -" set1.enableDashedLine(10f, 5f, 0f); set1.enableDashedHighlightLine(10f, 5f, 0f); set1.setColor(Color.BLACK); set1.setCircleColor(Color.BLACK); set1.setLineWidth(1f); set1.setCircleRadius(3f); set1.setDrawCircleHole(false); set1.setValueTextSize(9f); set1.setDrawFilled(true); if (Utils.getSDKInt() >= 18) { // fill drawable only supported on api level 18 and above Drawable drawable = ContextCompat.getDrawable(this, R.drawable.fade_red); set1.setFillDrawable(drawable); } else { set1.setFillColor(Color.BLACK); } ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>(); dataSets.add(set1); // add the datasets // create a data object with the datasets LineData data = new LineData(dataSets); // set data mChart.setData(data); } }
此處原始碼,參考Demo中的LineChartActivity1
最後樣式如下:
線圖
Demo概覽
Demo提供32個樣例:
- Line Chart:演示一個簡單的線圖
- Line Chart (Dual YAxis):演示一個有兩個Y軸線圖
- Bar Chart:演示一個柱狀圖
- Horizontal Bar Chart:演示水平柱狀圖,即X軸和Y軸反過來。
- Combined Chart:演示 線圖、柱狀圖、蠟燭圖、氣泡圖 如何疊加在一起顯示
- Pie Chart:演示簡易餅狀圖
- Pie Chart with value lines:演示帶資料線的餅狀圖
- Scatter Chart:演示了 圓點、方點、斜線 這三種樣式的散點圖
- Bubble Chart: 演示了不同顏色的氣泡圖。
- Stacked Bar Chart: 演示了堆積條形圖
- Stacked Bar Chart Negative:演示了有負數數值的堆積條形圖
- Another Bar Chart:只在底部顯示值的柱狀圖。
- Multiple Lines Chart:3條線圖混合在一起,用顏色和實線、虛線來區分
- Multiple Bars Chart:不同年份、不同公司的資料組成的柱狀圖
- Charts in ViewPager Fragments:結合ViewPager、Fragment,透過左右滑動檢視不同的圖表。
- BarChart inside ListView:柱狀圖如何嵌入在ListView中
- Multiple charts inside ListView:不同型別的圖表如何嵌入在ListView中
- Inverted Line Chart:演示(0,0)在左上角的線圖
- Candle Stick Chart: 演示蠟燭圖
- Cubic Line Chart:演示 立方擬合的折線圖
- Radar Chart:演示雷達圖
- Colored Line Chart:在不同背景色上演示同一張線圖
- Realtime Chart:實時產生資料,進行演示。
- Dynamical data adding:實時產生資料集和資料,進行演示。
- Performance Line Chart:用30000個數據來測試效能。
- Sinus Bar Chart:演示正弦柱狀圖。
- Chart in ScrollView:演示如何把圖表放在ScrollView中。
- BarChart positive / negative:演示有負值的柱狀圖。
- Realm.io Database:演示如何從Realm資料庫中獲取資料進行展示(裡面有9個案例)。
- Time Chart:演示時間圖。
- Filled LineChart:演示如何填滿兩條線圖中間的部分。
- Half PieChart:演示一個半圓的餅狀圖。
參考:
Panda
2016-08-03
相關推薦
解析Android上強大的圖表庫MPAndroidChart
條形圖和線形圖的組合圖 一圖勝千文,純粹的資料枯燥、無聊,讓人看不下去,改變一下形式,用圖表裝飾一下,立馬有趣多了。既然有這樣的外部需求,Android世界裡肯定要有圖表庫才行,今天解析的就是其中最強大的一個MPAndroidChart。 核心功能 支援以下圖
android開源圖表庫MPAndroidChart文件翻譯(上)
public interface OnChartGestureListener { /** * Callbacks when a touch-gesture has started on the chart (ACTION_DOWN) * * @param me
android開源圖表庫MPAndroidChart(曲線圖、直方圖、餅狀圖)
一個可以拖動縮放的圖表庫,包含曲線圖、直方圖、餅狀圖,其中直方圖支援3d效果。 該庫的可擴充套件性強,程式碼相對規範,最近一次更新有很大改進,如果不喜歡AChartEngine的過於複雜可以考慮在此庫的基礎上開發自己的圖表類。 linechart 填充式lineCha
(轉)Android圖表庫MPAndroidChart(十三)——簡約的底部柱狀圖
原地址:http://blog.csdn.net/qq_26787115/article/details/53376360 Android圖表庫MPAndroidChart(十三)——簡約的底部柱狀圖 我們繼續上一講,今天還是說下柱狀圖,這個圖的話應該是用的比較多
第三方圖表庫MPAndroidChart的使用
折線圖 @Override protected void initData() { mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf"); //設定當前折線圖的描述
Android自定義圖表庫:前言
文章目錄前言餅狀圖玫瑰圖進度圓形圖柱狀圖折線圖 前言 網上的圖表庫說多也多 說少也少,但是我個人感覺很大的缺點就是,一個圖表的文件太少,使用複雜,我個人的專案中一直使用的最古老的那個開源圖表庫AChartEngine,但是問題及其多,而且使用及其不方便,按照網上
Android自定義圖表庫(一):圓形進度圖
效果預覽 自定義View第一步:確認View的大小 無論是自定義一個View還是ViewGroup我們必須得先為其制定在不同MeasureSpecMode下的大小,我這裡就不講解什麼繪製原始碼了什麼的,我們就直接實戰。 我們在onMeasure中需要呼叫se
開源一個Android自定義圖表庫
專案中有一些圖表需求,一開始嘗試使用一些開源的圖表庫,這些圖表庫功能很強大,圖表種類應有盡有,是不錯的選擇。但是這些類庫使用起來通常需要大量的設定,對於專案風格不能很好的貼合。於是自己嘗試寫了一個圖表庫,使用起來非常方便,註釋清晰,後期擴充套件性強
Android強大的圖表開源——MPAndroidChart
介紹 在APP開發中遇到圖表的樣式,一般我們要先查詢GitHub上比較火的開源框架,這種圖示應用廣泛,統計、遊戲統計、人際關係圖等等,用到今天的這個框架MPAndroidChart 點選檢視GitHub 一個可以拖動縮放的圖表庫,包含曲線圖、直方圖
Android 屬性動畫(Property Animation) 全然解析 (上)
顏色 valid 全部 加速度 ext target ng- 點擊 save 轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/380674751、概述Android提供了幾種動畫類型:View Anima
.NET 上傳並解析CSV文件存庫
nco eat public reader new csv文件 err replace path 1.前端: 放置瀏覽按鈕 <div class="row inner_table text-center"> <in
Android Fragment 真正的完全解析(上)
watermark 展示 near 主界面 ddt comm 講解 超級 pro 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/lmj623565791/article/details/37970961 轉載請標明出處:
Android 屬性動畫(Property Animation) 完全解析 (上)【轉】
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/38067475 1、概述 Android提供了幾種動畫型別:View Animation 、Drawable Animation 、Property Anima
Android 股票圖表庫
JZAndroidChart 專案地址:donglua/JZAndroidChart 簡介:Android 股票圖表庫 更多:作者 提 Bug 標籤: Usage
強大的金融類圖表庫 TradingView 使用分享
這段時間剛好做幣圈交易所,運用到了現在最火的金融類圖表庫 -- TradingView ,就是強大,基本上現在的火幣網(https://www.huobi.com),幣安網(https://www.binance.com/ )等大型交易所都在使用。 簡介: 帶有開
android 快速解析json資料搭配Gson庫中Android Studio外掛 GsonFormat
轉:https://www.jianshu.com/p/d34c5e7c8227 更簡潔的文章:http://www.cnblogs.com/foxy/p/7825380.html 如果對json解析資料還不清楚的可以看一下我的例子:ExpandableListView+SQLite+Jso
Android安全攻防戰,反編譯與混淆技術完全解析(上)
轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有猶豫過要不要寫這篇文章,畢竟去反編譯人家的程式並不是什麼值得驕傲的事情。不過單純從技術角度上來講,掌握反編譯功能確實是
如何在android studio上加入OpenCV庫
在網上找了很久,找到的關於在android studio中加入OpenCV 庫的相關資料很少,而且解釋的不是很清楚,配置的時候做了十幾遍才成功。 將上述資料綜合一下,並加入了一些注意事項記錄下來。新手可以參考下。介紹瞭如何在android studio 中加入ope
【Android深入解析】Manifest配置檔案解析(上)(英文版)
<action> 語法規則: <action android:name="string"/> 描述 : Adds an action to an intentfilter. An elementmust contain one or more
Android框架---Google官方Gson解析(上)
Gson(又稱Google Gson)是Google公司釋出的一個開放原始碼的Java庫,主要用途為序列化Java物件為JSON字串,或反序列化JSON字串成Java物件。 而JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,