文章轉(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以上哺哼。