MPAndroid 中文文檔(轉(zhuǎn))

文章轉(zhuǎn)載自:https://github.com/tuteng/MPAndroidChart
https://github.com/PhilJay/MPAndroidChart
https://github.com/PhilJay/MPAndroidChart/wiki
http://blog.csdn.net/guijiaoba/article/details/41444697

開始

安裝

為了使用 LineChart, BarChart, ScatterChart, CandleStickChart, PieChart or RadarChart,像下面一樣定義它在 .xml中:

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/chart"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

然后通過下面的方式從你的Activity当叭, Fragment諸如此類的東西中檢索它:

        LineChart chart = (LineChart) findViewById(R.id.chart);

或者創(chuàng)建它在代碼中(然后增加它到一個(gè)布局中):

        LineChart chart = new LineChart(Context);

        RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativeLayout);
        rl.add(chart);

更新

  • invalidate():在圖表圖表項(xiàng)目中調(diào)用這個(gè)方法將重新刷新屏幕茬故。

數(shù)據(jù)記錄

  • setLogEnabled(boolean enabled):設(shè)置這個(gè)為真將激活圖表項(xiàng)目中的logcat輸出

通用圖表項(xiàng)目樣式

下面是一些你能直接使用在圖表項(xiàng)目中的通用的樣式方法。

  • setBackgroundColor(int color):設(shè)置背景顏色這將覆蓋整個(gè)圖表項(xiàng)目視圖蚁鳖。另外磺芭,一個(gè)背景顏色能被設(shè)置在.xml的布局文件中
  • setDescription(String desc):設(shè)置一個(gè)描述文本出現(xiàn)在圖表的右下角。
  • setDescriptionColor(int color): 設(shè)置描述文本的顏色醉箕。
  • setDescriptionPosition(float x, float y): 設(shè)置一個(gè)自定義坐標(biāo)用于定位描述文本在屏幕上的像素钾腺。
  • setDescriptionTypeface(Typeface t): 設(shè)置采用Typeface來繪制買描述文本。
  • setDescriptionTextSize(float size): 設(shè)置描述文本的像素尺寸讥裤,最小6f放棒,最大16f。
  • setNoDataTextDescription(String desc): 設(shè)置圖表為空時(shí)出現(xiàn)的文本己英。
  • setDrawGridBackground(boolean enabled): 如果打開间螟,背景矩形將出現(xiàn)在已經(jīng)畫好的繪圖區(qū)域的后邊。
  • setGridBackgroundColor(int color): 設(shè)置網(wǎng)格背景顏色。
  • setDrawBorders(boolean enabled):打開或關(guān)閉繪制的圖表邊框厢破。(環(huán)繞圖表的線)
  • setBorderColor(int color):設(shè)置圖表邊框線的顏色邮府。
  • setBorderWidth(float width): 設(shè)置圖表邊框線的寬度。
  • setMaxVisibleValueCount(int count): 設(shè)置一個(gè)數(shù)字用于圖表中顯示繪制的值標(biāo)簽溉奕。這僅作用于當(dāng)setDrawValues()允許時(shí)褂傀。

與圖表交互

這個(gè)庫允許你完全自定義與圖表視圖觸摸交互的各種情況以及對(duì)交互其作用的回調(diào)方法。

打開/關(guān)閉交互

  • setTouchEnabled(boolean enabled): 允許你打開或者關(guān)閉與圖表的所有觸摸交互的情況加勤。
  • setDragEnabled(boolean enabled): 打開或關(guān)閉對(duì)圖表的拖動(dòng)仙辟。
  • setScaleEnabled(boolean enabled):打開或關(guān)閉對(duì)圖表所有軸的的縮放。
  • setScaleXEnabled(boolean enabled): 打開或關(guān)閉x軸的縮放
  • setScaleYEnabled(boolean enabled): 打開或關(guān)閉y軸的縮放鳄梅。
  • setPinchZoom(boolean enabled): 如果設(shè)置為true叠国,擠壓縮放被打開。如果設(shè)置為false戴尸,x和y軸可以被單獨(dú)擠壓縮放粟焊。
  • setHighlightEnabled(boolean enabled): 如果設(shè)置為true,在圖表中通過觸屏高亮或選擇值是可能的孙蒙。
  • setHighlightPerDragEnabled(boolean enabled): 設(shè)置為true時(shí)允許高亮顯示拖動(dòng)結(jié)束的對(duì)象在縮放到最下時(shí)项棠。默認(rèn):true
  • setHighlightIndicatorEnabled(boolean enabled): 如果設(shè)置為true, 指標(biāo)線(或桿)將展示被選擇的線的繪制的值挎峦。

通過編程自動(dòng)高亮

  • highlightValues(Highlight[] highs): 突出顯示給定索引處的值在被給定的數(shù)據(jù)集中香追。提供null或空的數(shù)組將取消所有的高亮。
  • highlightValues(Highlight[] highs): 突出顯示給定xIndex為索引在被給定的數(shù)據(jù)集中坦胶。提供-1時(shí)將去取消所有的高亮
  • getHighlighted():返回一個(gè)Highlight[]的數(shù)組包含關(guān)于所有高亮入口的信息透典,它們的x-索引和數(shù)據(jù)集的索引。

編程自動(dòng)高亮將不產(chǎn)生OnChartValueSelectedListener回調(diào)

選擇回調(diào)

這個(gè)庫提供了大量的監(jiān)聽回調(diào)在交互后顿苇。其中一個(gè)是OnChartValueSelectedListener峭咒,在觸屏高亮值的時(shí)候進(jìn)行回調(diào)。

        public interface OnChartValueSelectedListener {
            /**
            * Called when a value has been selected inside the chart.
            *
            * @param e The selected Entry.
            * @param dataSetIndex The index in the datasets array of the data object
            * the Entrys DataSet is in.
            * @param h the corresponding highlight object that contains information
            * about the highlighted position
            */
            public void onValueSelected(Entry e, int dataSetIndex, Highlight h);
            /**
            * Called when nothing has been selected or an "un-select" has been made.
            */
            public void onNothingSelected();
        }  

讓你的類接收回調(diào)實(shí)現(xiàn)這個(gè)接口并設(shè)置它作為圖表的一個(gè)listener

        chart.setOnChartValueSelectedListener(this);

手勢(shì)回調(diào)

OnChartGestureListener將允許你對(duì)圖表上的手勢(shì)作出反應(yīng):

        public interface OnChartGestureListener {
        
            /**
             * Callbacks when the chart is longpressed.
             * 
             * @param me
             */
            public void onChartLongPressed(MotionEvent me);
        
            /**
             * Callbacks when the chart is double-tapped.
             * 
             * @param me
             */
            public void onChartDoubleTapped(MotionEvent me);
        
            /**
             * Callbacks when the chart is single-tapped.
             * 
             * @param me
             */
            public void onChartSingleTapped(MotionEvent me);
        
            /**
             * Callbacks then a fling gesture is made on the chart.
             * 
             * @param me1
             * @param me2
             * @param velocityX
             * @param velocityY
             */
            public void onChartFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY);
        }

讓你的類接收回調(diào)實(shí)現(xiàn)這個(gè)接口并設(shè)置它作為圖表的一個(gè)listener

        chart.setOnChartGestureListener(this);

The Axis(AxisBase)

此頁關(guān)注AxisBase類纪岁,他是XAxis和YAxis的基類凑队。

下面提及的方法在兩個(gè)軸上都能使用。

這個(gè)軸類允許對(duì)下面的組件或部分指定具體的樣式:

  • 標(biāo)簽(繪制時(shí)垂直對(duì)齊)蜂科,包括軸的描述值顽决。
  • 坐標(biāo)軸,它直接被繪制平行于標(biāo)簽旁邊导匣。
  • 網(wǎng)格線才菠,每個(gè)來自水平方向的標(biāo)簽軸。
  • LimitLines,允許呈現(xiàn)具體的信息贡定,像邊框或者限制赋访。

控制軸的哪部分應(yīng)該被繪制

  • setEnabled(boolean enabled):設(shè)置軸的打開或者關(guān)閉。如果關(guān)閉,坐標(biāo)軸不會(huì)被繪制蚓耽。
  • setDrawAxisLine(boolean enabled): 設(shè)置為true渠牲,如果線在軸的側(cè)面應(yīng)該被畫,否則不步悠。
  • setDrawGridLines(boolean enabled): 設(shè)置為true打開繪制網(wǎng)格線對(duì)于軸來說签杈。
  • setDrawLabels(boolean enabled):設(shè)置為true打開繪制軸的標(biāo)簽。

修改軸線樣式

  • setTextColor(int color): 設(shè)置軸標(biāo)簽的顏色鼎兽。
  • setTextSize(float size):設(shè)置軸標(biāo)簽的字體大小以dp為單位答姥。
  • setTypeface(Typeface tf):設(shè)置軸標(biāo)簽的自定義Typeface
  • setGridColor(int color): 設(shè)置這個(gè)軸的網(wǎng)格線顏色。
  • setGridLineWidth(float width):設(shè)置軸的網(wǎng)格線寬度谚咬。
  • setAxisLineColor(int color):設(shè)置此軸的坐標(biāo)軸的顏色鹦付。
  • setAxisLineWidth(float width): 設(shè)置此軸的坐標(biāo)軸的寬度。
  • enableGridDashedLine(float lineLength, float spaceLength, float phase): 激活網(wǎng)格線虛線模式择卦,有點(diǎn)像"- - - - - -"敲长。"lineLength"控制短線條的長度,"spaceLength"控制兩段線之間的間隔長度秉继,"phase"控制開始的點(diǎn)祈噪。

限制線

兩個(gè)軸支持LimitLines的調(diào)用允許呈現(xiàn)專用信息,像邊界或者約束秕噪。LimitLines添加到Y(jié)Axis會(huì)在水平方向繪制钳降,垂直方向繪制需要添加到XAxis。下面是你如何增加和移除LimitLines從YAxis:

  • addLimitLine(LimitLine l): 添加一個(gè)新的LimitLine到軸上腌巾。
  • removeLimitLine(LimitLine l): 從軸上移除一個(gè)指定的LimitLine。
    多個(gè)方法也適用于添加或者移除铲觉。
  • setDrawLimitLinesBehindData(boolean enabled): 允許控制Z軸順序在LimitLines和真實(shí)數(shù)據(jù)之間澈蝙。如果設(shè)置true,LimitLines繪制在真實(shí)數(shù)據(jù)后面撵幽,否則在上面灯荧,默認(rèn):false

限制線(類 LimitLine)(也稱為指示線)是明確和簡單的線能給使用者提供額外的信息。

這是一個(gè)例子盐杂,你的圖表可以展示已經(jīng)用應(yīng)用登錄的用戶的多種形式的血壓測(cè)量結(jié)果逗载。為了通知用戶心動(dòng)血壓超過140mmhg被考慮會(huì)有健康風(fēng)險(xiǎn),你可以增加一個(gè)LimitLine在140處來提供那條信息链烈。

例子:
YAxis leftAxis = chart.getAxisLeft();

        LimitLine ll = new LimitLine(140f, "Critical Blood Pressure");
        ll.setLineColor(Color.RED);
        ll.setLineWidth(4f);
        ll.setTextColor(Color.BLACK);
        ll.setTextSize(12f);
        // .. and more styling options

        leftAxis.addLimitLine(ll);

XAxis (XLabels)

這個(gè)XAxis是AxisBase的子類

XAxis類(在2.0.0之前是XLabels),是一切與水平軸相關(guān)的數(shù)據(jù)和信息的容器厉斟。每個(gè) Line-, Bar-, Scatter CandleStickChart和 RadarChart 都有一個(gè)XAxis對(duì)象,XAxis將顯為一個(gè)ArrayList<String> 或者 String[]和交給ChartData對(duì)象的是什么强衡。
XAxis類允許對(duì)下面的組件或部分指定具體的樣式:

  • 標(biāo)簽(繪制時(shí)水平對(duì)齊)擦秽,包括軸的描述值,這些包括提供的數(shù)據(jù)對(duì)象你為圖表設(shè)置的(x軸的值)
  • 坐標(biāo)軸,它直接被繪制平行于標(biāo)簽旁邊感挥。
  • 網(wǎng)格線缩搅,每個(gè)來自垂直方向的標(biāo)簽軸。

為了取得XAxis類的實(shí)例触幼,調(diào)用下面的方法:

        XAxis xAxis = chart.getXAxis();   

自定義軸線的值

  • setAdjustXLabels(boolean enabled):如果被設(shè)置為true硼瓣,x軸條目將依賴于它自己在進(jìn)行縮放的時(shí)候。如果設(shè)置為false置谦,x軸條目將總是保持相同堂鲤。
  • setAvoidFirstLastClipping(boolean enabled):如果設(shè)置為true,圖表將避免第一個(gè)和最后一個(gè)標(biāo)簽條目被減掉在圖表或屏幕的邊緣霉祸。
  • setSpaceBetweenLabels(int characters): 設(shè)置x軸標(biāo)簽之間的空間字符數(shù)筑累,默認(rèn)是4個(gè)。
  • setPosition(XAxisPosition pos):設(shè)置XAxis應(yīng)該出現(xiàn)的位置丝蹭÷冢可以選擇TOP,BOTTOM奔穿,BOTH_SIDED镜沽,TOP_INSIDE或者BOTTOM_INSIDE。

例子:

        XAxis xAxis = chart.getXAxis();
        xAxis.setPosition(XAxisPosition.BOTTOM);
        xAxis.setTextSize(10f);
        xAxis.setTextColor(Color.RED);
        xAxis.setDrawAxisLine(true);
        xAxis.setDrawGridLines(false);
        // and more...

YAxis(YLabels)

YAxis類(在2.0.0之前是Ylabels),是一切與垂直軸相關(guān)的數(shù)據(jù)和信息的容器贱田。每個(gè) Line-, Bar-, Scatter or CandleStickChart都有一個(gè)左和一個(gè)右的YAxis對(duì)象缅茉,分別負(fù)責(zé)左邊或者右邊。RadarChart只有一個(gè)YAxis男摧。默認(rèn)蔬墩,圖表的所有軸在被繪制的時(shí)候都被繪制。
YAxis類允許對(duì)下面的組件或部分指定具體的樣式:

  • 標(biāo)簽(繪制時(shí)垂直對(duì)齊)耗拓,包括軸的描述值拇颅。
  • 坐標(biāo)軸,它直接被繪制平行于標(biāo)簽旁邊乔询。
  • 網(wǎng)格線樟插,每個(gè)來自水平方向的標(biāo)簽軸。
  • LimitLines,允許呈現(xiàn)具體的信息竿刁,像邊框或者限制黄锤。

為了取得YAxis類的實(shí)例,調(diào)用下面的方法:

        YAxis leftAxis = chart.getAxisLeft();
        YAxis rightAxis = chart.getAxisRight();
        
        YAxis leftAxis = chart.getAxis(AxisDependency.LEFT);
        
        YAxis yAxis = radarChart.getYAxis(); // this method radarchart only

在運(yùn)行時(shí)刻食拜,使用 public AxisDependency getAxisDependency()來確定圖表軸呈現(xiàn)的邊鸵熟。

自定義軸線的值

  • setStartAtZero(boolean enabled):如果這個(gè)打開,軸線總是有最小值0,無論什么類型的圖表被展示监婶。
  • setAxisMaxValue(float max):設(shè)置一個(gè)自定義的最大值為這條軸旅赢,如果設(shè)置了齿桃,這個(gè)值將不會(huì)依賴于提供的數(shù)據(jù)自動(dòng)計(jì)算。
  • resetAxisMaxValue(): 調(diào)用這個(gè)將撤銷以前設(shè)置的最大值煮盼。這意味著短纵,你將再次允許軸自動(dòng)計(jì)算它的最大值。
  • setAxisMinValue(float min): 設(shè)置一個(gè)自定義的最小值僵控。如果設(shè)置了香到,這個(gè)值將不會(huì)依賴于你提供的數(shù)據(jù)進(jìn)行自動(dòng)計(jì)算。
  • resetAxisMinValue():調(diào)用這個(gè)方法撤銷以前設(shè)置的最小值报破。這意味著悠就,你將再次允許軸自動(dòng)計(jì)算他的最小值。
  • setInverted(boolean enabled): 如果設(shè)置為true充易,這個(gè)軸將被反向梗脾,那意味著最高出的將到底部,最低部的到頂端盹靴。
  • setSpaceTop(float percent):設(shè)置在圖表上最高處的值相比軸上最高值的頂端空間(總軸范圍的百分比)
  • setSpaceBottom(float percent): 設(shè)置在圖表上最低處的值相比軸上最低處值的底部空間(總軸范圍的百分比)
  • setShowOnlyMinMax(boolean enabled): 如果打開了炸茧,這個(gè)軸將展示出它的最小值和最大值。這將忽略或者覆蓋定義過的label-count稿静。
  • setPosition(YAxisLabelPosition pos):設(shè)置軸標(biāo)簽應(yīng)該被繪制的位置梭冠。INSIDE_CHART或者OUTSIDE_CHART中的一個(gè)。
    自定義影響軸的數(shù)值范圍應(yīng)該在圖表被設(shè)置數(shù)據(jù)之前應(yīng)用改备。

代碼例子:

        YAxis yAxis = mChart.getAxisLeft();
        yAxis .setTypeface(...); // set a different font
        yAxis .setTextSize(12f); // set the textsize
        yAxis.setValueFormatter(new MyValueFormatter());
        //... and more

設(shè)置數(shù)據(jù)

如果你想增加值(數(shù)據(jù))到圖表中控漠,它必須用下面這個(gè)方法迅腔。

         public void setData(ChartData data) { ... }       

基類ChartData類封裝了所有的數(shù)據(jù)和信息那是在圖表繪制期間需要的扒秸。對(duì)于每種類型的圖表,ChartData的不同的子類(例如LineData)存在應(yīng)該被用來為圖表設(shè)置數(shù)據(jù)辜腺。在構(gòu)造函數(shù)中默勾,你能移交數(shù)據(jù)到ArrayList模板毙驯,并且作為值來顯示,另外字符串的ArrayList將描述在x軸的標(biāo)簽灾测。例如類LineData(繼承自ChartData),用來增加數(shù)據(jù)到LineChart:

            // this is just one of many constructors
        public LineData(ArrayList<String> xVals, ArrayList<LineDataSet> sets) { ... }

因此垦巴,什么是DataSet為什么需要它媳搪?那實(shí)際上相當(dāng)簡單。在圖表內(nèi)互相在一起的數(shù)據(jù)集對(duì)象表示一組條目(數(shù)據(jù)條目類型)骤宣。它被設(shè)計(jì)用來區(qū)分在圖表中邏輯上不同組的值秦爆。對(duì)于每種類型的圖表,擴(kuò)展數(shù)據(jù)集 (例如 LineDataSet) 的不同對(duì)象存在允許特定的樣式憔披。
作為一個(gè)例子等限,你可能想用LineChart展示兩個(gè)不同公司的季度收入在一年中的爸吮。在這種情況下,建議你創(chuàng)建兩個(gè)不同的LineDataSet對(duì)象望门,每個(gè)包含四個(gè)值(每個(gè)代表一個(gè)季度)形娇。用ArrayList來描述x軸上的標(biāo)簽,你可以簡單的提供四個(gè)字符串“1.Q”,“2.Q”,“3.Q”,“4.Q"
當(dāng)然筹误,你只提供一個(gè)包含兩個(gè)公司8個(gè)值的LineDataSet對(duì)象也是可以的桐早。

那么怎么設(shè)置一個(gè)LinDataSet對(duì)象呢?

         public LineDataSet(ArrayList<Entry> yVals, String label) { ... }   

在查找構(gòu)造函數(shù)時(shí)(不同的構(gòu)造函數(shù)可用)厨剪,它是可見的哄酝,LinedataSet需要一個(gè)ArrayList條目類型和一個(gè)字符串用來描述LineDataSet以及用于圖表標(biāo)簽。更進(jìn)一步這個(gè)標(biāo)簽?zāi)鼙挥脕韺ふ以贚ineData對(duì)象中除LineDataSet對(duì)象外的其他LineDataSet祷膳。
ArrayList條目類型封裝了圖表的所有值陶衅。一個(gè)Entry對(duì)象除了封裝它周圍的值還保存了它自己的值,它的位置在x軸(在LineData對(duì)象的字符串類型的ArrayList里面值的索引被映射):

         public Entry(float val, int xIndex) { ... }

把它們放在一起(例如兩個(gè)公司 一年里的季度收入):
首先直晨,創(chuàng)建Entry的類型的列表保存你的值:

         ArrayList<Entry> valsComp1 = new ArrayList<Entry>();
         ArrayList<Entry> valsComp2 = new ArrayList<Entry>();

然后搀军,填充列表用Entry對(duì)象。確保entry對(duì)象包含正確的x軸的索引(當(dāng)然抡秆,一個(gè)循環(huán)能在這兒被使用奕巍,在這種情況下,循環(huán)計(jì)數(shù)器可以為x軸的索引)儒士。

        Entry c1e1 = new Entry(100.000f, 0); // 0 == quarter 1
        valsComp1.add(c1e1);
        Entry c1e2 = new Entry(50.000f, 1); // 1 == quarter 2 ...
        valsComp1.add(c1e2);
        // and so on ...
    
        Entry c2e1 = new Entry(120.000f, 0); // 0 == quarter 1
        valsComp2.add(c2e1);
        Entry c2e2 = new Entry(110.000f, 1); // 1 == quarter 2 ...
        valsComp2.add(c2e2);
        //...    

現(xiàn)在我們有了Entry對(duì)象的列表的止,LineDataSet對(duì)象可以被創(chuàng)建:

        LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1");
        LineDataSet setComp2 = new LineDataSet(valsComp2, "Company 2");

但是還沒完,我們創(chuàng)建一個(gè)DataSets的列表和一個(gè)x軸條目的列表并且構(gòu)建我們的ChartData對(duì)象:

        ArrayList<LineDataSet> dataSets = new ArrayList<LineDataSet>();
        dataSets.add(setComp1);
        dataSets.add(setComp2);
    
        ArrayList<String> xVals = new ArrayList<String>();
        xVals.add("1.Q"); xVals.add("2.Q"); xVals.add("3.Q"); xVals.add("4.Q"); 
    
        LineData data = new LineData(xVals, dataSets);
        mLineChart.setData(data);
        mLineChart.invalidate(); // refresh   

在調(diào)用了invalidate()之后圖表被刷新并且提供的數(shù)據(jù)被繪制着撩。

設(shè)置顏色

自從發(fā)布1.4.0之后诅福,在以前版本中負(fù)責(zé)顏色設(shè)置的ColorTemplate對(duì)象不在需要。然而它依然保存了所有與定義的顏色數(shù)組(例如ColorTemplate.VORDIPLOM_COLORS)并且提供了方便的方法為了從資源(資源整數(shù))轉(zhuǎn)換顏色到真正的顏色拖叙。
取代了ColorTemplate氓润,顏色現(xiàn)在能被直接指定在DataSet對(duì)象中,那將允許區(qū)分每種DataSet樣式薯鳍。

在這個(gè)簡短的例子中咖气,我們有兩個(gè)不同的LineDataSet對(duì)象來代表兩家公司的季度收入(在前面設(shè)置數(shù)據(jù)指南中提到的),我們現(xiàn)在想設(shè)置不同的顏色挖滤。

我們想做如下:

  • 公司1的值應(yīng)該通過四個(gè)紅色的不同的變量來呈現(xiàn)崩溪。
  • 公司2的值應(yīng)該通過四個(gè)綠色的不同的變量來呈現(xiàn)。

代碼看上去像下面:

  LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1");
  // sets colors for the dataset, resolution of the resource name to a "real" color is done internally
  setComp1.setColors(new int[] { R.color.red1, R.color.red2, R.color.red3, R.color.red4 }, Context);

  LineDataSet setComp2 = new LineDataSet(valsComp2, "Company 2");
  setComp2.setColors(new int[] { R.color.green1, R.color.green2, R.color.green3, R.color.green4 }, Context);

除了以上斩松,有許多其他的方法來給數(shù)據(jù)集設(shè)置顏色伶唯。下面是完整的文檔:

  • setColors(int [] colors, Context c): 設(shè)置顏色應(yīng)該被用在數(shù)據(jù)集前面,只要數(shù)據(jù)集表示的i項(xiàng)數(shù)大于顏色數(shù)組的大小惧盹,顏色將被重用乳幸。你能使用"new int[] { R.color.red, R.color.green, ... }" 來給這個(gè)方法提供顏色瞪讼。在內(nèi)部,顏色通過使用getResources().getColor(...)來獲取粹断。
  • setColors(int [] colors): 設(shè)置顏色應(yīng)該被用在數(shù)據(jù)集之前符欠,只要數(shù)據(jù)集表示的i項(xiàng)數(shù)大于顏色數(shù)組的大小,顏色將被重用姿染。確保顏色應(yīng)經(jīng)被準(zhǔn)備好(通過調(diào)用getResources().getColor(...))在增加它們到數(shù)據(jù)集之前背亥。
  • setColors(ArrayList<Integer> colors): 設(shè)置顏色應(yīng)該被用在數(shù)據(jù)集之前,只要數(shù)據(jù)集表示的i項(xiàng)數(shù)大于顏色數(shù)組的大小悬赏,顏色將被重用狡汉。確保顏色應(yīng)經(jīng)被準(zhǔn)備好(通過調(diào)用getResources().getColor(...))在增加它們到數(shù)據(jù)集之前。
  • setColor(int color): 設(shè)置一種或者唯一一種顏色應(yīng)該被用于這個(gè)數(shù)據(jù)集之前闽颇。在內(nèi)部盾戴,這將重新創(chuàng)建顏色數(shù)組并添加指定的顏色。

ColorTemplate例子:

    LineDataSet set = new LineDataSet(...);
    set.setColors(ColorTemplate.VORDIPLOM_COLORS);

如果沒有顏色被設(shè)置對(duì)于數(shù)據(jù)集兵多,默認(rèn)顏色被使用

數(shù)據(jù)格式化

這個(gè)ValueFormatter接口可以用來創(chuàng)建定制格式化程序類允許格式化圖標(biāo)中的數(shù)據(jù)或這Y軸上的數(shù)據(jù)尖啡。

使用ValueFormatter僅需要?jiǎng)?chuàng)建一個(gè)新的類和實(shí)現(xiàn)他的接口并且從getFormattedValue(float value)返回任何你想要顯示的文本。

自定義格式化的例子:

        public class MyValueFormatter implements ValueFormatter {
        
            private DecimalFormat mFormat;
        
            public MyValueFormatter() {
                mFormat = new DecimalFormat("###,###,##0.0"); // use one decimal
            }
        
            @Override
            public String getFormattedValue(float value) {
                return mFormat.format(value) + " $"; // append a dollar-sign
            }
        }

然后設(shè)置你需要格式化的YAxis, ChartData或者DataSet對(duì)象:

        // usage on axis
        yAxis.setValueFormatter(new MyValueFormatter());

        // usage on whole data object
        lineData.setValueFormatter(new MyValueFormatter());

        // usage on individual dataset object
        lineDataSet.setValueFormatter(new MyValueFormatter());

特殊圖表設(shè)置

在章節(jié)1的通用圖標(biāo)設(shè)置和樣式函數(shù)適用于所有之前提及的圖表類型剩膘。這個(gè)章節(jié)關(guān)注特殊設(shè)置用于獨(dú)特的圖標(biāo)類型衅斩。

餅圖

  • setDrawSliceText(boolean enabled): 設(shè)置這個(gè)為true是繪制x軸的值文本在餅圖切片上。
  • setUsePercentValues(boolean enabled): 如果設(shè)置為true怠褐,圖標(biāo)顯示數(shù)據(jù)的百分比而不是他們的原始數(shù)據(jù)畏梆。數(shù)據(jù)提供了ValueFormatter情況下會(huì)格式化百分比數(shù)據(jù)。

圖例

默認(rèn)奈懒,所有的圖表類型支持圖例并且將自動(dòng)生成繪制出圖例在為圖表設(shè)置數(shù)據(jù)之后奠涌。圖例通常包含多種條目每個(gè)標(biāo)簽代表一個(gè)形狀。
自動(dòng)生成的圖例包含的項(xiàng)數(shù)取決于不同的顏色 (在所有數(shù)據(jù)集對(duì)象中) 以及數(shù)據(jù)集標(biāo)簽數(shù)目磷杏。圖例標(biāo)簽依賴于在圖表中使用的數(shù)據(jù)集對(duì)象設(shè)置的標(biāo)簽溜畅。在數(shù)據(jù)集對(duì)象中如果沒有標(biāo)簽被制定,圖表將自動(dòng)生成它們极祸。如果多種顏色被用在一個(gè)數(shù)據(jù)集中慈格,這些顏色分組并且只被一個(gè)標(biāo)簽描述。
對(duì)于自定義的圖例遥金,你能從圖表中檢索圖例對(duì)象使用getLegend()方法:

    Legend legend = chart.getLegend();

控制圖例是否被繪制

  • setEnabled(boolean enabled): 設(shè)置圖例打開或者關(guān)閉峦椰,如果關(guān)閉,圖例將不會(huì)被繪制汰规。

修改圖例樣式

  • setTextColor(int color): 設(shè)置圖例標(biāo)簽的顏色
  • setTextSize(float size): 設(shè)置圖例標(biāo)簽字體大小以dp為單位
  • setTypeface(Typeface tf): 設(shè)置自定義的Typeface對(duì)于圖例標(biāo)簽

自定義圖例

  • setPosition(LegendPosition pos): 設(shè)置LegendPosition將定義圖例在哪里出現(xiàn)∥镆兀可以選擇RIGHT_OF_CHART, RIGHT_OF_CHART_CENTER, RIGHT_OF_CHART_INSIDE, BELOW_CHART_LEFT, BELOW_CHART_RIGHT, BELOW_CHART_CENTER 或者 PIECHART_CENTER(PieChart獨(dú)有),...等等溜哮。
  • setForm(LegendForm shape):設(shè)置LegendForm應(yīng)該被使用滔金。這是旁邊帶有顏色的圖例項(xiàng)表示的數(shù)據(jù)集的圖例標(biāo)簽繪制的形狀∶ぃ可以選擇SQUARE, CIRCLE或者LINE.
  • setFormSize(float size): 設(shè)置圖例形式大小以dp為單位
  • setXEntrySpace(float space): 在水平軸上的圖例項(xiàng)之間的間距設(shè)置餐茵。
  • setYEntrySpace(float space):垂直軸上的圖例項(xiàng)之間的間距設(shè)置。
  • setFormToTextSpacefloat space): 設(shè)置圖例標(biāo)簽和相應(yīng)的圖例窗體之間的空間述吸。

例子:

        Legend l = chart.getLegend();
        l.setFormSize(10f); // set the size of the legend forms/shapes
        l.setForm(LegendForm.CIRCLE); // set what type of form/shape should be used
        l.setPosition(LegendPosition.BELOW_CHART_LEFT);
        l.setTypeface(...);
        l.setTextSize(12f);
        l.setTextColor(Color.BLACK);
        l.setXEntrySpace(5f); // set the space between the legend entries on the x-axis
        l.setYEntrySpace(5f); // set the space between the legend entries on the y-axis
        // and many more...

動(dòng)態(tài)和實(shí)時(shí)數(shù)據(jù)

為了動(dòng)態(tài)增加或者移除數(shù)據(jù)到圖表忿族,有多種方法允許你增加或者移除條目對(duì)象到一個(gè)存在的數(shù)據(jù)集或者從數(shù)據(jù)集對(duì)象到一個(gè)存在的ChartData對(duì)象。

類DataSet(和所有的子類):

  • addEntry(Entry e): 增加給出的條目對(duì)象到DataSet

類ChartData(和所有的子類)

  • addEntry(Entry e, int dataSetIndex): 增加給的條目到數(shù)據(jù)集蝌矛,指定了數(shù)據(jù)集索引道批。
  • addDataSet(DataSet d): 增加給的DataSet對(duì)象到ChartData對(duì)象

另外也有幾個(gè)方法來動(dòng)態(tài)的移除數(shù)據(jù)。

類DataSet(和所有的子類):

  • public boolean removeEntry(Entry e):移除給定的條目對(duì)象從數(shù)據(jù)集中入撒。如果成功返回true
  • public boolean removeEntry(int xIndex): 移除給定的x索引處的條目從數(shù)據(jù)集中隆豹,如果成功返回true

類ChartData(和所有的子類):

  • public boolean removeEntry(Entry e, int dataSetIndex):移除給定的條目對(duì)象從數(shù)據(jù)集中,指定了數(shù)據(jù)集索引茅逮。如果成功返回true璃赡。
  • public boolean removeEntry(int xIndex, int dataSetIndex):從給定的數(shù)據(jù)集索引數(shù)據(jù)集中移除給定的 x 索引處的項(xiàng).如果成功返回true。
  • public boolean removeDataSet(DataSet d):移除給定的數(shù)據(jù)集對(duì)象從ChartData對(duì)象中献雅。如果成功返回true碉考。
  • public boolean removeDataSet(int index): 移除給定索引處的數(shù)據(jù)集從ChartData對(duì)象中。如果成功返回true挺身。

修改Viewport

這個(gè)庫包含各種方法修改視口侯谁,請(qǐng)注意這些方法僅適用于LineChart, BarChart, ScatterChart and CandleStickChart。

請(qǐng)注意所有修改視口方法調(diào)需要在圖標(biāo)設(shè)置數(shù)據(jù)之后瞒渠。

約束顯示什么

  • setVisibleXRange(float xRange): 設(shè)置區(qū)域的大小(范圍在x軸)良蒸。例如設(shè)置了10,沒有超過10的值在x軸上可查看不需要滾動(dòng)
  • setVisibleYRange(float yRange, AxisDependency axis): 設(shè)置區(qū)域的大小(范圍在y軸)伍玖。你同樣需要提供軸此約束應(yīng)適用于嫩痰。
  • setViewPortOffsets(float left, float top, float right, float bottom):設(shè)定對(duì)當(dāng)前視口的自定義便宜(對(duì)于圖標(biāo)窗口邊的實(shí)際偏移),設(shè)置這個(gè)將防止圖表自動(dòng)計(jì)算他的偏移窍箍。使用resetViewPortOffsets()取消這個(gè)設(shè)置串纺。
    resetViewPortOffsets():重置通過setViewPortOffsets(...)設(shè)置的自定義偏移。允許圖標(biāo)再次自動(dòng)計(jì)算所有偏移椰棘。

移動(dòng)視圖

  • fitScreen(): 重置所有的縮放和拖動(dòng)使圖表完全適合它的邊界纺棺。
  • moveViewToX(float xIndex): 移動(dòng)當(dāng)前視口的左側(cè)(邊緣)到指定的x索引
  • moveViewToY(float yValue, AxisDependency axis): 中心視口提供的y軸上指定的y值(左側(cè)或右側(cè))。
  • moveViewTo(float xIndex, float yValue, AxisDependency axis): 這將移動(dòng)當(dāng)前視口的左側(cè)(邊緣)到指定的x索引在x軸上邪狞,并且中心視口提供的y軸上指定的y值(相當(dāng)于結(jié)合了setVisibleXRange(...)和setVisibleYRange(...))
  • centerViewTo(int xIndex, float yValue, AxisDependency axis): 這會(huì)將當(dāng)前視區(qū)的中心移動(dòng)到指定的x指數(shù)和y值(相當(dāng)于結(jié)合了setVisibleXRange(...)和 setVisibleYRange(...))

完整例子:
chart.setData(...); // first set data

        // now modify viewport
        chart.setVisibleXRange(20); // allow 20 values to be displayed on the x-axis
        chart.moveViewToX(10); // set the left edge of the chart to x-index 10

        // refresh
        chart.invalidate();

動(dòng)畫

注意:動(dòng)畫只能工作在API級(jí)別11(Android 3.0.x)或更高

在低版本Android使用祷蝌,動(dòng)畫將不執(zhí)行(但是也不崩潰)

所有的圖表類型都支持動(dòng)畫,那能被用來創(chuàng)建圖表以一種很酷的方式帆卓。有三種類型的動(dòng)畫方法存在通過x軸巨朦,y軸或者兩個(gè)軸來區(qū)分:

  • animateX(int durationMillis):動(dòng)畫的圖表值在水平軸米丘,意味著圖標(biāo)將在指定的時(shí)間從左到右建立。

  • animateY(int durationMillis):動(dòng)畫圖表值在y軸糊啡,意味著圖表將在指定的時(shí)間內(nèi)從下到上構(gòu)建拄查。

  • animateXY(int xDuration, int yDuration):動(dòng)畫顯示于水平和垂直的軸上,結(jié)果為左右上下都可以構(gòu)建棚蓄。

      mChart.animateX(3000); // animate horizontal 3000 milliseconds
      // or:
      mChart.animateY(3000); // animate vertical 3000 milliseconds
      // or:
      mChart.animateXY(3000, 3000); // animate horizontal and vertical 3000 milliseconds
    

如果animate(...)(任何類)被調(diào)用,不用再調(diào)用invalidate()來刷新圖表堕扶。

動(dòng)畫緩沖

這個(gè)庫允許你為你的動(dòng)畫使用好的緩沖函數(shù)。你能選著下面預(yù)定義的靜態(tài)Easing.EasingOption

    public enum EasingOption {
          Linear,
          EaseInQuad,
          EaseOutQuad,
          EaseInOutQuad,
          EaseInCubic,
          EaseOutCubic,
          EaseInOutCubic,
          EaseInQuart,
          EaseOutQuart,
          EaseInOutQuart,
          EaseInSine,
          EaseOutSine,
          EaseInOutSine,
          EaseInExpo,
          EaseOutExpo,
          EaseInOutExpo,
          EaseInCirc,
          EaseOutCirc,
          EaseInOutCirc,
          EaseInElastic,
          EaseOutElastic,
          EaseInOutElastic,
          EaseInBack,
          EaseOutBack,
          EaseInOutBack,
          EaseInBounce,
          EaseOutBounce,
          EaseInOutBounce,
      }

基本上有兩種緩沖動(dòng)畫:

1梭依、預(yù)定義緩沖動(dòng)畫:(這些代碼可以運(yùn)行在任何安卓版本)

    public void animateY(int durationmillis, Easing.EasingOption option); 

使用預(yù)定義緩沖選項(xiàng)調(diào)用任何動(dòng)畫方法

    // animate both axes with easing
    mChart.animateY(3000, Easing.EasingOption.EaseOutBack); 

在安卓3.0(API Level 11)以下版本總是使用Easing.EasingOption為預(yù)定義緩沖動(dòng)畫稍算。

2、自定義緩沖函數(shù):(自定義緩沖函數(shù)在安卓3.0以下會(huì)崩潰)

    public void animateY(int durationmillis, EasingFunction function); 

創(chuàng)建自定義緩沖動(dòng)畫通過創(chuàng)建你自己的緩沖函數(shù)和實(shí)現(xiàn)EasingFunction接口:

     /**
      * Interface for creating custom made easing functions. 
      */
      public interface EasingFunction {
         /**
          * Called everytime the animation is updated.
          * @param input - the time passed since the animation started (value between 0 and 1)
          */
          public float getInterpolation(float input);
      }

下面是調(diào)用這個(gè)的方法(注意睛挚,這個(gè)運(yùn)行在安卓3.0以下會(huì)奔潰)

     // animate both axes with easing
     mChart.animateY(3000, new MyEasingFunction()); 

MarkerView

MakerView類能被任何用戶創(chuàng)建的類擴(kuò)展為了展示自定義的(彈窗)View無論何時(shí)要在圖表中高亮一個(gè)值邪蛔。

設(shè)置或者得到marker

  • setMarkerView(MarkerView mv): 為圖表設(shè)置一個(gè)MarkerView為了展示被選擇的值在哪里。
  • getMarkerView(): 返回在圖表中被設(shè)置的MarkerView扎狱,沒有就返回null

自定義實(shí)現(xiàn)

下面是一個(gè)看上去比較想MarkerView自定義實(shí)現(xiàn)的例子侧到。比較重要的是你可以根據(jù)以下方法實(shí)現(xiàn)它:

  • refreshContent(Entry e, int dataSetIndex):每次這個(gè)方法被調(diào)用MarkerView被重新繪制,給你機(jī)會(huì)來更新它顯示的內(nèi)容(例如為TexView設(shè)置文本)
  • getXOffset():返回標(biāo)記被繪制位置在x軸上的偏移淤击。默認(rèn)的匠抗,標(biāo)記將被繪制在條目位置的左上邊緣。
  • getYOffset(): 返回標(biāo)記被繪制位置在y軸上的偏移污抬。默認(rèn)的汞贸,標(biāo)記將被繪制在條目位置的左上邊緣。
    public class CustomMarkerView extends MarkerView {
    
        private TextView tvContent;
    
        public CustomMarkerView (Context context, int layoutResource) {
            super(context, layoutResource);
            // this markerview only displays a textview
            tvContent = (TextView) findViewById(R.id.tvContent);
        }
    
        // callbacks everytime the MarkerView is redrawn, can be used to update the
        // content (user-interface)
        @Override
        public void refreshContent(Entry e, int dataSetIndex) {
            tvContent.setText("" + e.getVal()); // set the entry-value as the display text
        }
    
        @Override
        public int getXOffset() {
            // this will center the marker-view horizontally
            return -(getWidth() / 2);
        }
    
        @Override
        public int getYOffset() {
            // this will cause the marker-view to be above the selected value
            return -getHeight();
        }
    }

在設(shè)置了自定義的標(biāo)記類之后印机,創(chuàng)建一個(gè).xml的布局來呈現(xiàn)你的標(biāo)記矢腻。在這個(gè)例子中布局包含一個(gè)帶背景圖片的相對(duì)布局還包含一個(gè)TextView。當(dāng)然你可以創(chuàng)建任何你想到的布局在這里射赛。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:background="@drawable/markerImage" >
    
        <TextView
            android:id="@+id/tvContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="7dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:text=""
            android:textSize="12dp"
            android:textColor="@android:color/white"
            android:ellipsize="end"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    
    </RelativeLayout>     

最后多柑,在你創(chuàng)建了你自己的MarkerView之后,在圖表中設(shè)置它楣责。在創(chuàng)建你的MarkerView的時(shí)候竣灌,確保你提供了布局資源在你創(chuàng)建的.xml中。

    CustomMarkerView mv = new CustomMarkerView (Context, R.layout.custom_marker_view_layout);
    
    // set the marker to the chart
    chart.setMarkerView(mv);

ChartData類

這個(gè)維基條目旨在更好地洞察 MPAndroidChart 背后的數(shù)據(jù)模型秆麸。
ChartData類是所有數(shù)據(jù)類的基類(子類)初嘹,像LineData,BarData沮趣,...等等屯烦。它被用來為Chart提供數(shù)據(jù)像圖表中的setData()方法。

        public class LineData extends ChartData { ...

下面提到的方法被實(shí)現(xiàn)在ChartData類中,因此也能被用在所有子類中漫贞。

數(shù)據(jù)樣式

  • setValueTextColor(int color):設(shè)置文本值(值標(biāo)簽被繪制的顏色)的顏色為這個(gè)數(shù)據(jù)對(duì)象包含的所有數(shù)據(jù)集甸箱。
  • setValueTextSize(float size): 設(shè)置文本值(以dp為單位)的字體大小為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集。
  • setValueTypeface(Typeface tf): 設(shè)置值標(biāo)簽的字體樣式為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集迅脐。
  • setValueFormatter(ValueFormatter f): 設(shè)置自定義的ValueFormatter為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集。
  • setDrawValues(boolean enabled):打開或者關(guān)閉繪制的值(文本值)為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集豪嗽。

Getters/Convenience

  • getDataSetByIndex(int index):返回在數(shù)據(jù)對(duì)象DataSet列表中給出的索引的數(shù)據(jù)集對(duì)象谴蔑。
  • contains(Entry entry):檢查數(shù)據(jù)對(duì)象是否包含指定的條目。如果是返回true龟梦,否則返回false隐锭。注意:在這一點(diǎn)上性能并不好,不要過度使用在性能要求高的的地方计贰。
  • contains(T dataSet):如果數(shù)據(jù)對(duì)象包含提供的DataSet返回true钦睡,否則返回false

clearing

  • clearValues(): 清除所有DataSet對(duì)象的數(shù)據(jù)對(duì)象因而包括所有條目。不會(huì)刪除提供的x值躁倒。

Data類詳情

這個(gè)wiki條目集中于ChartData類的子類荞怒。此處未提到的ChartData的所有其他子類不提供任何具體的增強(qiáng)功能。

BarData(類 BarData)

  • setGroupSpace(float percent): 設(shè)置不同的數(shù)據(jù)集對(duì)象的bars之間的空間占一個(gè)bar的寬度的百分比秧秉。100正好是一個(gè)bar的寬度褐桌,默認(rèn):80.
  • isGrouped(): 如果數(shù)據(jù)對(duì)象被分組返回true(包括超過一個(gè)數(shù)據(jù)集),否則返回false象迎。

ScatterData(類 ScatterData)

  • getGreatestShapeSize(): 返回所有ScatterDataSets這個(gè)數(shù)據(jù)對(duì)象包含的最大的外形尺寸荧嵌。

PieData(類 PieData)

  • getDataSet(): 返回為這個(gè)數(shù)據(jù)對(duì)象設(shè)置的PieDataSet對(duì)象。PieData對(duì)象不能包含多個(gè)PieDataSets砾淌。
  • setDataSet(PieDataSet set): 設(shè)置PieDataSet這個(gè)數(shù)據(jù)對(duì)象應(yīng)該被呈現(xiàn)啦撮。

CombinedData(類 CombinedData)

這個(gè)數(shù)據(jù)對(duì)象被設(shè)計(jì)用來包含所有其他數(shù)據(jù)對(duì)象的實(shí)例。使用setData()方法來為這個(gè)對(duì)象提供數(shù)據(jù)汪厨。這只能被CombinedChart使用赃春。
里面看上去像下面這樣:

        public class CombinedData extends ChartData {
        
            // ...
        
            public CombinedData(List<String> xVals) { ... }
        
            public CombinedData(String[] xVals) { ... }
        
            public void setData(LineData data) { ... }
        
            public void setData(BarData data) { ... }
        
            public void setData(ScatterData data) { ... }
        
            public void setData(CandleData data) { ... }
        
            // ...
        }

DataSet類

DataSet類是所有data-set類(子類)的基類,像LineDataSet骄崩,BarDataSet,...等等聘鳞。

    public class DataSet extends LineDataSet { ...

DataSet類代表一組或者一種類型的條目中關(guān)系比較近的圖表。它被設(shè)計(jì)用來區(qū)分在圖表中邏輯上不同組的值(例如在LineChart中的具體行的值要拂,或者在BarChart中的具體組的值)抠璃。
下面提到的方法被實(shí)現(xiàn)在DataSet類中因此也能被用在其所有的子類中。

數(shù)據(jù)樣式

  • setValueTextColor(int color):設(shè)置文本值(值標(biāo)簽被繪制的顏色)的顏色為這個(gè)數(shù)據(jù)對(duì)象包含的所有數(shù)據(jù)集脱惰。
  • setValueTextSize(float size): 設(shè)置文本值(以dp為單位)的字體大小為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集搏嗡。
  • setValueTypeface(Typeface tf): 設(shè)置值標(biāo)簽的字體樣式為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集。
  • setValueFormatter(ValueFormatter f): 設(shè)置自定義的ValueFormatter為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集。
  • setDrawValues(boolean enabled):打開或者關(guān)閉繪制的值(文本值)為此數(shù)據(jù)對(duì)象所包含的所有數(shù)據(jù)集采盒。

如果在整個(gè)數(shù)據(jù)對(duì)象(不是data-set)中有相同的顏色旧乞,你可以只調(diào)用上述之一提到的ChartData對(duì)象。

Getters/Convenience

  • contains(Entry entry):檢查數(shù)據(jù)對(duì)象是否包含指定的條目磅氨。如果是返回true尺栖,否則返回false。注意:在這一點(diǎn)上性能并不好烦租,不要過度使用在性能要求高的的地方延赌。

DataSet類詳細(xì)說明

這個(gè)wiki條目集中于DataSet類的子類。此處未提到的ChartData的所有其他子類不提供任何具體的增強(qiáng)功能叉橱。

Line-, Bar-, Scatter- & CandleDataSet (下面提到的方法能被用在任何提到的DataSet類中)

  • setHighLightColor(int color): 設(shè)置用來高亮顯示的顏色挫以。不要忘記使用getResources().getColor(...) 或者Color.rgb(...) (或者簡單的 Color.BLACK)來獲取顏色。

Line- & RadarDataSet(只適用于LineDataSet 和 RadarDataSet的方法)

  • setFillColor(int color): 設(shè)置用來填充線表面的顏色窃祝。
  • setFillAlpha(int alpha): 設(shè)置阿爾法值(透明度)用來填充線表面(0-255)掐松,默認(rèn):85, 255代表完全不透明,0代表完全透明粪小。
  • setDrawFilled(boolean filled): 設(shè)置為true大磺,如果數(shù)據(jù)集應(yīng)該被繪制填充(表面,區(qū)域)糕再,并不只是作為線量没,急用這將會(huì)得到極大的性能提升!默認(rèn):false
  • setLineWidth(float width):設(shè)置線寬為數(shù)據(jù)集(最小值0.2f突想,最大值10f);默認(rèn)1f 注意:細(xì)線可以帶來更好的性能殴蹄,出線會(huì)有比較差的性能。
    下面提到的方法只應(yīng)用于具體提到的DataSet子類猾担。

LineDataSet(類LineDataSet)

  • setCircleSize(float size): 設(shè)置圓形指標(biāo)線的大邢啤(半徑),默認(rèn)大小為4f
  • setDrawCircles(boolean enabled):設(shè)置為true為打開繪制圓為LineDataSet绑嘹,默認(rèn)true
  • setDrawCubic(boolean enabled):如果設(shè)置為true稽荧,linechart線被繪制在立方體中,代替linear工腋。這對(duì)性能有負(fù)面影響姨丈! 默認(rèn):false
  • setCubicIntensity(float intensity):為立方線設(shè)置強(qiáng)度(如果打開的話)。最大值1f代表高立方效果擅腰,最小值0.05f代表低立方效果蟋恬。默認(rèn):0.2f
  • setCircleColor(int color): 為這個(gè)數(shù)據(jù)集應(yīng)該有的所有圓設(shè)置顏色。
  • setCircleColors(List colors): 為這個(gè)數(shù)據(jù)集的圓外設(shè)置顏色趁冈。也有各種各樣的其他方法為設(shè)置愿的顏色歼争。
  • setCircleColorHole(int color): 設(shè)置圓內(nèi)的顏色(洞內(nèi))
  • setDrawCircleHole(boolean enabled):設(shè)置這個(gè)為true允許在這個(gè)數(shù)據(jù)集的每個(gè)圓內(nèi)繪制一個(gè)洞拜马。如果設(shè)置為false,圓將被繪制填滿(沒有洞)
  • enableDashedLine(float lineLength, float spaceLength, float phase): 在虛線模式下打開線被繪制沐绒。例如像這“----------”“l(fā)ineLength”是部分線的長度俩莽。“spaceLength”是兩個(gè)部分之間的空間乔遮“绯“phase”是偏移,以度為單位(正常情況下蹋肮,使用0)

BarDataSet(類 BarDataSet)

  • setBarSpacePercent(float percent):設(shè)置bars之間的空間占bar總寬度的百分比瞒津。
  • setBarShadowColor(int color): 設(shè)置用來繪制的bar影子的顏色。bar的影子在表面代表在bar后面指示的最大值括尸。不要忘記使用getResources().getColor(...) 或者Color.rgb(...) (或者簡單的 Color.BLACK)來獲取顏色。
  • setHighLightAlpha(int alpha): 設(shè)置被用來繪制高亮指示的bar阿爾法值(透明度)病毡。255代表完全不透明濒翻,0代表完全透明。
  • setStackLabels(String[] labels): 設(shè)置標(biāo)簽為bar-stacks的不同的值啦膜,在這種情況下有一個(gè)有送。

ScatterDataSet(類 ScatterDataSet)

  • setScatterShapeSize(float size): 設(shè)置將要繪制的scattershape的像素的大小,這僅適用于非自定義的形狀僧家。
  • setScatterShape(ScatterShape shape):設(shè)置圖形被繪制的位置在值出現(xiàn)的地方雀摘。

CandleDataSet(類 CandleDataSet)

  • setBodySpace(float space): 在每個(gè)柱狀的左側(cè)和右側(cè)設(shè)置空間,默認(rèn)0.1f(10%)八拱,最大值0.45f阵赠, 最小值0f
  • setShadowWidth(float width):設(shè)置candle-shadow-line的寬度以dp為單位。默認(rèn)3f肌稻。

PieDataSet(類 PieDataSet)

  • setSliceSpace(float degrees): 設(shè)置piechart-slices左側(cè)之間的空間清蚀。默認(rèn):0’-->沒有空間,最大值45,最小值0(沒有空間)爹谭。
  • setSelectionShift(float shift):設(shè)置距離圖表中心的數(shù)據(jù)集的高亮部分的餅圖的距離枷邪,默認(rèn)12f

其他項(xiàng)

圖表內(nèi)容

  • clear(): 清除圖表的所有數(shù)據(jù)(通過設(shè)置數(shù)據(jù)對(duì)象為null)。調(diào)用invalidate()來刷新圖表诺凡。
  • clearValues():清除所有數(shù)據(jù)集對(duì)象的圖表包括所有條目东揣。不會(huì)刪除提供的x值。調(diào)用invalidate()來刷新圖表腹泌。
  • isEmpty(): 如果圖表數(shù)據(jù)為null返回true嘶卧,或者如果它沒有條目。

有用的getter方法

  • getData():返回你為圖表設(shè)置的數(shù)據(jù)對(duì)象真屯。
  • getViewPortHandler():返回圖表的ViewPortHandler對(duì)象脸候,它包含一些關(guān)于圖表大小和邊界的信息(偏移,內(nèi)容區(qū)域)。
  • getRenderer(): 返回負(fù)責(zé)繪制圖表數(shù)據(jù)的主要的DataRenderer
  • getCenter():返回整個(gè)圖表視圖的中心點(diǎn)运沦。
  • getCenterOffsets():返回圖表繪圖區(qū)的中心點(diǎn)泵额。
  • getAverage(): 返回圖表包含的所有值的平均值。
  • getPercentOfTotal(float value):返回所提供的值在圖表內(nèi)占總和的百分比携添。
  • getValueCount(): 返回圖表擁有數(shù)據(jù)的總數(shù)嫁盲。
  • getValueSum(): 返回在圖表內(nèi)所有值的和。
  • getYMin(): 返回圖表數(shù)據(jù)的最小值烈掠。
  • getYMax(): 返回圖表數(shù)據(jù)的最大值羞秤。

一些更多的方法(Chart類的)

  • saveToGallery(String title):保存當(dāng)前數(shù)據(jù)狀態(tài)作為一張圖片到圖庫。
  • saveToPath(String title, String pathOnSD):保存當(dāng)前圖表狀態(tài)作為一張圖片到指定路徑左敌。
  • getChartBitmap():返回bitmap對(duì)象來呈現(xiàn)圖表瘾蛋,這個(gè)Bitmap總是包含最新的圖表的繪制狀態(tài)。
  • setHardwareAccelerationEnabled(boolean enabled): 允許打開或者關(guān)閉硬件加速為圖表矫限,只支持API11以上哺哼。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叼风,隨后出現(xiàn)的幾起案子取董,更是在濱河造成了極大的恐慌,老刑警劉巖无宿,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茵汰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡孽鸡,警方通過查閱死者的電腦和手機(jī)蹂午,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梭灿,“玉大人画侣,你說我怎么就攤上這事”ざ剩” “怎么了配乱?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長皮迟。 經(jīng)常有香客問我搬泥,道長,這世上最難降的妖魔是什么伏尼? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任忿檩,我火速辦了婚禮,結(jié)果婚禮上爆阶,老公的妹妹穿的比我還像新娘燥透。我一直安慰自己沙咏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布班套。 她就那樣靜靜地躺著肢藐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吱韭。 梳的紋絲不亂的頭發(fā)上吆豹,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音理盆,去河邊找鬼痘煤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猿规,可吹牛的內(nèi)容都是我干的衷快。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姨俩,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼烦磁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哼勇,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呕乎,沒想到半個(gè)月后积担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猬仁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年帝璧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片湿刽。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡的烁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诈闺,到底是詐尸還是另有隱情渴庆,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布雅镊,位于F島的核電站襟雷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏仁烹。R本人自食惡果不足惜耸弄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卓缰。 院中可真熱鬧计呈,春花似錦砰诵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苇瓣,卻和暖如春尉间,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背击罪。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工哲嘲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人媳禁。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓眠副,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竣稽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子囱怕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 開始 ####安裝 為了使用 LineChart, BarChart, ScatterChart, CandleS...
    帥氣的豬豬閱讀 8,457評(píng)論 0 1
  • MPAndroidChart是一款基于Android的開源圖表庫,MPAndroidChart不僅可以在Andro...
    Code4Android閱讀 23,577評(píng)論 23 66
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理毫别,服務(wù)發(fā)現(xiàn)娃弓,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • 夏天,也許對(duì)于很多人來說砾肺,是炎熱挽霉、是泳池、是空調(diào)房......而與我而言变汪,卻是迷茫的季節(jié)侠坎。 初中升高中的那個(gè)夏天,...
    梔九爺閱讀 922評(píng)論 18 8
  • 我在的南方小鎮(zhèn),今天最低溫度10度番官,北風(fēng)蕭蕭寒雨霏霏童芹。孩子昨晚發(fā)燒了一夜。早起時(shí)鲤拿,孩子說假褪,爸爸我今天起床不去幼...
    慢速嫩司機(jī)閱讀 620評(píng)論 0 0