開(kāi)始 ####安裝 為了使用 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" />
然后通過(guò)下面的方式從你的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來(lái)繪制買描述文本。
setDescriptionTextSize(float size): 設(shè)置描述文本的像素尺寸阿宅,最小6f候衍,最大16f。
setNoDataTextDescription(String desc): 設(shè)置圖表為空時(shí)出現(xiàn)的文本洒放。
setDrawGridBackground(boolean enabled): 如果打開(kāi)蛉鹿,背景矩形將出現(xiàn)在已經(jīng)畫(huà)好的繪圖區(qū)域的后邊。
setGridBackgroundColor(int color): 設(shè)置網(wǎng)格背景顏色往湿。
setDrawBorders(boolean enabled):打開(kāi)或關(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è)庫(kù)允許你完全自定義與圖表視圖觸摸交互的各種情況以及對(duì)交互其作用的回調(diào)方法绒窑。
打開(kāi)/關(guān)閉交互
setTouchEnabled(boolean enabled): 允許你打開(kāi)或者關(guān)閉與圖表的所有觸摸交互的情況棕孙。
setDragEnabled(boolean enabled): 打開(kāi)或關(guān)閉對(duì)圖表的拖動(dòng)。
setScaleEnabled(boolean enabled):打開(kāi)或關(guān)閉對(duì)圖表所有軸的的縮放回论。
setScaleXEnabled(boolean enabled): 打開(kāi)或關(guān)閉x軸的縮放
setScaleYEnabled(boolean enabled): 打開(kāi)或關(guān)閉y軸的縮放散罕。
setPinchZoom(boolean enabled): 如果設(shè)置為true分歇,擠壓縮放被打開(kāi)傀蓉。如果設(shè)置為false,x和y軸可以被單獨(dú)擠壓縮放职抡。
setHighlightEnabled(boolean enabled): 如果設(shè)置為true葬燎,在圖表中通過(guò)觸屏高亮或選擇值是可能的。
setHighlightPerDragEnabled(boolean enabled): 設(shè)置為true時(shí)允許高亮顯示拖動(dòng)結(jié)束的對(duì)象在縮放到最下時(shí)缚甩。默認(rèn):true
setHighlightIndicatorEnabled(boolean enabled): 如果設(shè)置為true谱净, 指標(biāo)線(或桿)將展示被選擇的線的繪制的值。
通過(guò)編程自動(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è)庫(kù)提供了大量的監(jiān)聽(tīng)回調(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) 此頁(yè)關(guān)注AxisBase類较幌,他是XAxis和YAxis的基類。
下面提及的方法在兩個(gè)軸上都能使用白翻。
這個(gè)軸類允許對(duì)下面的組件或部分指定具體的樣式:
標(biāo)簽(繪制時(shí)垂直對(duì)齊)乍炉,包括軸的描述值。
坐標(biāo)軸滤馍,它直接被繪制平行于標(biāo)簽旁邊岛琼。
網(wǎng)格線,每個(gè)來(lái)自水平方向的標(biāo)簽軸纪蜒。
LimitLines,允許呈現(xiàn)具體的信息衷恭,像邊框或者限制。
控制軸的哪部分應(yīng)該被繪制
setEnabled(boolean enabled):設(shè)置軸的打開(kāi)或者關(guān)閉纯续。如果關(guān)閉随珠,坐標(biāo)軸不會(huì)被繪制。
setDrawAxisLine(boolean enabled): 設(shè)置為true猬错,如果線在軸的側(cè)面應(yīng)該被畫(huà)窗看,否則不。
setDrawGridLines(boolean enabled): 設(shè)置為true打開(kāi)繪制網(wǎng)格線對(duì)于軸來(lái)說(shuō)倦炒。
setDrawLabels(boolean enabled):設(shè)置為true打開(kāi)繪制軸的標(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"控制短線條的長(zhǎng)度院尔,"spaceLength"控制兩段線之間的間隔長(zhǎng)度,"phase"控制開(kāi)始的點(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)(也稱為指示線)是明確和簡(jiǎn)單的線能給使用者提供額外的信息。
這是一個(gè)例子件余,你的圖表可以展示已經(jīng)用應(yīng)用登錄的用戶的多種形式的血壓測(cè)量結(jié)果讥脐。為了通知用戶心動(dòng)血壓超過(guò)140mmhg被考慮會(huì)有健康風(fēng)險(xiǎn),你可以增加一個(gè)LimitLine在140處來(lái)提供那條信息啼器。
例子:
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[]和交給ChartData對(duì)象的是什么端壳。
XAxis類允許對(duì)下面的組件或部分指定具體的樣式:
標(biāo)簽(繪制時(shí)水平對(duì)齊)告丢,包括軸的描述值,這些包括提供的數(shù)據(jù)對(duì)象你為圖表設(shè)置的(x軸的值)
坐標(biāo)軸损谦,它直接被繪制平行于標(biāo)簽旁邊岖免。
網(wǎng)格線,每個(gè)來(lái)自垂直方向的標(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è)來(lái)自水平方向的標(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()來(lái)確定圖表軸呈現(xiàn)的邊。
自定義軸線的值
setStartAtZero(boolean enabled):如果這個(gè)打開(kāi)牌柄,軸線總是有最小值0,無(wú)論什么類型的圖表被展示畸悬。
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): 如果打開(kāi)了秽荤,這個(gè)軸將展示出它的最小值和最大值甜奄。這將忽略或者覆蓋定義過(guò)的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)該被用來(lái)為圖表設(shè)置數(shù)據(jù)蜒茄。在構(gòu)造函數(shù)中唉擂,你能移交數(shù)據(jù)到ArrayList模板,并且作為值來(lái)顯示檀葛,另外字符串的ArrayList將描述在x軸的標(biāo)簽玩祟。例如類LineData(繼承自ChartData),用來(lái)增加數(shù)據(jù)到LineChart:
// this is just one of many constructors
public LineData(ArrayList<String> xVals, ArrayList<LineDataSet> sets) { ... }
因此屿聋,什么是DataSet為什么需要它卵凑?那實(shí)際上相當(dāng)簡(jiǎn)單。在圖表內(nèi)互相在一起的數(shù)據(jù)集對(duì)象表示一組條目(數(shù)據(jù)條目類型)胜臊。它被設(shè)計(jì)用來(lái)區(qū)分在圖表中邏輯上不同組的值勺卢。對(duì)于每種類型的圖表,擴(kuò)展數(shù)據(jù)集 (例如 LineDataSet) 的不同對(duì)象存在允許特定的樣式象对。 作為一個(gè)例子黑忱,你可能想用LineChart展示兩個(gè)不同公司的季度收入在一年中的。在這種情況下勒魔,建議你創(chuàng)建兩個(gè)不同的LineDataSet對(duì)象甫煞,每個(gè)包含四個(gè)值(每個(gè)代表一個(gè)季度)。用ArrayList來(lái)描述x軸上的標(biāo)簽冠绢,你可以簡(jiǎn)單的提供四個(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ù)可用)楷力,它是可見(jiàn)的,LinedataSet需要一個(gè)ArrayList條目類型和一個(gè)字符串用來(lái)描述LineDataSet以及用于圖表標(biāo)簽孵户。更進(jìn)一步這個(gè)標(biāo)簽?zāi)鼙挥脕?lái)尋找在LineData對(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");
但是還沒(méi)完龄减,我們創(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è)簡(jiǎn)短的例子中,我們有兩個(gè)不同的LineDataSet對(duì)象來(lái)代表兩家公司的季度收入(在前面設(shè)置數(shù)據(jù)指南中提到的)违崇,我們現(xiàn)在想設(shè)置不同的顏色阿弃。
我們想做如下:
公司1的值應(yīng)該通過(guò)四個(gè)紅色的不同的變量來(lái)呈現(xiàn)。
公司2的值應(yīng)該通過(guò)四個(gè)綠色的不同的變量來(lái)呈現(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);
除了以上渣淳,有許多其他的方法來(lái)給數(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, ... }" 來(lái)給這個(gè)方法提供顏色嗤谚。在內(nèi)部棺蛛,顏色通過(guò)使用getResources().getColor(...)來(lái)獲取。
setColors(int [] colors): 設(shè)置顏色應(yīng)該被用在數(shù)據(jù)集之前巩步,只要數(shù)據(jù)集表示的i項(xiàng)數(shù)大于顏色數(shù)組的大小旁赊,顏色將被重用。
確保顏色應(yīng)經(jīng)被準(zhǔn)備好(通過(guò)調(diào)用getResources().getColor(...))在增加它們到數(shù)據(jù)集之前椅野。
setColors(ArrayList colors): 設(shè)置顏色應(yīng)該被用在數(shù)據(jù)集之前终畅,只要數(shù)據(jù)集表示的i項(xiàng)數(shù)大于顏色數(shù)組的大小,顏色將被重用竟闪。
確保顏色應(yīng)經(jīng)被準(zhǔn)備好(通過(guò)調(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);
如果沒(méi)有顏色被設(shè)置對(duì)于數(shù)據(jù)集,默認(rèn)顏色被使用
數(shù)據(jù)格式化 這個(gè)ValueFormatter接口可以用來(lái)創(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ì)象中如果沒(méi)有標(biāo)簽被制定酱吝,圖表將自動(dòng)生成它們也殖。如果多種顏色被用在一個(gè)數(shù)據(jù)集中,這些顏色分組并且只被一個(gè)標(biāo)簽描述务热。
對(duì)于自定義的圖例忆嗜,你能從圖表中檢索圖例對(duì)象使用getLegend()方法:
Legend legend = chart.getLegend();
控制圖例是否被繪制
setEnabled(boolean enabled): 設(shè)置圖例打開(kāi)或者關(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è)方法來(lái)動(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è)庫(kù)包含各種方法修改視口甫窟,請(qǐng)注意這些方法僅適用于LineChart, BarChart, ScatterChart and CandleStickChart密浑。
請(qǐng)注意所有修改視口方法調(diào)需要在圖標(biāo)設(shè)置數(shù)據(jù)之后。
約束顯示什么
setVisibleXRange(float xRange): 設(shè)置區(qū)域的大小(范圍在x軸)粗井。例如設(shè)置了10尔破,沒(méi)有超過(guò)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():重置通過(guò)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)畫(huà)
注意:動(dòng)畫(huà)只能工作在API級(jí)別11(Android 3.0.x)或更高
在低版本Android使用冤灾,動(dòng)畫(huà)將不執(zhí)行(但是也不崩潰)
所有的圖表類型都支持動(dòng)畫(huà)前域,那能被用來(lái)創(chuàng)建圖表以一種很酷的方式。有三種類型的動(dòng)畫(huà)方法存在通過(guò)x軸韵吨,y軸或者兩個(gè)軸來(lái)區(qū)分:
animateX(int durationMillis):動(dòng)畫(huà)的圖表值在水平軸匿垄,意味著圖標(biāo)將在指定的時(shí)間從左到右建立。
animateY(int durationMillis):動(dòng)畫(huà)圖表值在y軸归粉,意味著圖表將在指定的時(shí)間內(nèi)從下到上構(gòu)建椿疗。
animateXY(int xDuration, int yDuration):動(dòng)畫(huà)顯示于水平和垂直的軸上,結(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()來(lái)刷新圖表届榄。
動(dòng)畫(huà)緩沖
這個(gè)庫(kù)允許你為你的動(dòng)畫(huà)使用好的緩沖函數(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)畫(huà):
1倔喂、預(yù)定義緩沖動(dòng)畫(huà):(這些代碼可以運(yùn)行在任何安卓版本)
public void animateY(int durationmillis, Easing.EasingOption option);
使用預(yù)定義緩沖選項(xiàng)調(diào)用任何動(dòng)畫(huà)方法
// animate both axes with easing
mChart.animateY(3000, Easing.EasingOption.EaseOutBack);
在安卓3.0(API Level 11)以下版本總是使用Easing.EasingOption為預(yù)定義緩沖動(dòng)畫(huà)铝条。
2、自定義緩沖函數(shù):(自定義緩沖函數(shù)在安卓3.0以下會(huì)崩潰)
public void animateY(int durationmillis, EasingFunction function);
創(chuàng)建自定義緩沖動(dòng)畫(huà)通過(guò)創(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無(wú)論何時(shí)要在圖表中高亮一個(gè)值班缰。
設(shè)置或者得到marker
setMarkerView(MarkerView mv): 為圖表設(shè)置一個(gè)MarkerView為了展示被選擇的值在哪里。
getMarkerView(): 返回在圖表中被設(shè)置的MarkerView悼枢,沒(méi)有就返回null
自定義實(shí)現(xiàn)
下面是一個(gè)看上去比較想MarkerView自定義實(shí)現(xiàn)的例子埠忘。比較重要的是你可以根據(jù)以下方法實(shí)現(xiàn)它:
refreshContent(Entry e, int dataSetIndex):每次這個(gè)方法被調(diào)用MarkerView被重新繪制,給你機(jī)會(huì)來(lái)更新它顯示的內(nèi)容(例如為T(mén)exView設(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的布局來(lái)呈現(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隘庄,...等等。它被用來(lái)為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):打開(kāi)或者關(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)上性能并不好玩敏,不要過(guò)度使用在性能要求高的的地方斗忌。
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(包括超過(guò)一個(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ì)用來(lái)包含所有其他數(shù)據(jù)對(duì)象的實(shí)例爽航。使用setData()方法來(lái)為這個(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ì)用來(lái)區(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):打開(kāi)或者關(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)上性能并不好,不要過(guò)度使用在性能要求高的的地方紫岩。
DataSet類詳細(xì)說(shuō)明
這個(gè)wiki條目集中于DataSet類的子類规惰。此處未提到的ChartData的所有其他子類不提供任何具體的增強(qiáng)功能。
Line-, Bar-, Scatter- & CandleDataSet (下面提到的方法能被用在任何提到的DataSet類中)
setHighLightColor(int color): 設(shè)置用來(lái)高亮顯示的顏色泉蝌。不要忘記使用
getResources().getColor(...) 或者Color.rgb(...) (或者簡(jiǎn)單的 Color.BLACK)來(lái)獲取顏色歇万。
Line- & RadarDataSet(只適用于LineDataSet 和 RadarDataSet的方法)
setFillColor(int color): 設(shè)置用來(lái)填充線表面的顏色。
setFillAlpha(int alpha): 設(shè)置阿爾法值(透明度)用來(lái)填充線表面(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ì)線可以帶來(lái)更好的性能雌桑,出線會(huì)有比較差的性能喇喉。 下面提到的方法只應(yīng)用于具體提到的DataSet子類。
LineDataSet(類LineDataSet)
setCircleSize(float size): 設(shè)置圓形指標(biāo)線的大行?印(半徑)拣技,默認(rèn)大小為4f
setDrawCircles(boolean enabled):設(shè)置為true為打開(kāi)繪制圓為L(zhǎng)ineDataSet衅鹿,默認(rèn)true
setDrawCubic(boolean enabled):如果設(shè)置為true,linechart線被繪制在立方體中过咬,代替linear大渤。這對(duì)性能有負(fù)面影響! 默認(rèn):false
setCubicIntensity(float intensity):為立方線設(shè)置強(qiáng)度(如果打開(kāi)的話)掸绞。最大值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较曼,圓將被繪制填滿(沒(méi)有洞)
enableDashedLine(float lineLength, float spaceLength, float phase): 在虛線模式下打開(kāi)線被繪制。
例如像這“----------”“l(fā)ineLength”是部分線的長(zhǎng)度振愿〗萦蹋“spaceLength”是兩個(gè)部分之間的空間∶崮“phase”是偏移萍歉,以度為單位(正常情況下,使用0)
BarDataSet(類 BarDataSet)
setBarSpacePercent(float percent):設(shè)置bars之間的空間占bar總寬度的百分比档桃。
setBarShadowColor(int color): 設(shè)置用來(lái)繪制的bar影子的顏色枪孩。bar的影子在表面代表在bar后面指示的最大值。不要忘記使用
getResources().getColor(...) 或者Color.rgb(...) (或者簡(jiǎn)單的 Color.BLACK)來(lái)獲取顏色藻肄。
setHighLightAlpha(int alpha): 設(shè)置被用來(lái)繪制高亮指示的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’-->沒(méi)有空間纺腊,最大值45,最小值0(沒(méi)有空間)畔咧。
setSelectionShift(float shift):設(shè)置距離圖表中心的數(shù)據(jù)集的高亮部分的餅圖的距離茎芭,默認(rèn)12f
其他項(xiàng)
圖表內(nèi)容
clear(): 清除圖表的所有數(shù)據(jù)(通過(guò)設(shè)置數(shù)據(jù)對(duì)象為null)。調(diào)用invalidate()來(lái)刷新圖表誓沸。
clearValues():清除所有數(shù)據(jù)集對(duì)象的圖表包括所有條目梅桩。不會(huì)刪除提供的x值。調(diào)用invalidate()來(lái)刷新圖表拜隧。
isEmpty(): 如果圖表數(shù)據(jù)為null返回true宿百,或者如果它沒(méi)有條目。
有用的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(): 返回圖表?yè)碛袛?shù)據(jù)的總數(shù)。
getValueSum(): 返回在圖表內(nèi)所有值的和炭菌。
getYMin(): 返回圖表數(shù)據(jù)的最小值罪佳。
getYMax(): 返回圖表數(shù)據(jù)的最大值逛漫。
一些更多的方法(Chart類的)
saveToGallery(String title):保存當(dāng)前數(shù)據(jù)狀態(tài)作為一張圖片到圖庫(kù)黑低。
saveToPath(String title, String pathOnSD):保存當(dāng)前圖表狀態(tài)作為一張圖片到指定路徑。
getChartBitmap():返回bitmap對(duì)象來(lái)呈現(xiàn)圖表酌毡,這個(gè)Bitmap總是包含最新的圖表的繪制狀態(tài)克握。
setHardwareAccelerationEnabled(boolean enabled): 允許打開(kāi)或者關(guān)閉硬件加速為圖表,只支持API11以上枷踏。
以上內(nèi)容均摘抄至:https://github.com/tuteng/MPAndroidChart
方便大家學(xué)習(xí)