一幅簡(jiǎn)單的LineChart
效果:
效果圖
代碼:
MainActivity
package cn.foxnickel.chartdemo;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
import java.util.ArrayList;
import java.util.List;
/*
* 新建LineChart的大概步驟:
* 1.設(shè)置Chart格式
* 2.獲取坐標(biāo)軸并設(shè)置坐標(biāo)軸的格式
* 3.添加數(shù)據(jù)
* */
public class MainActivity extends AppCompatActivity {
LineChart mLineChart;
private List<Entry> mEntryList;
private final String TAG = getClass().getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLineChart = (LineChart) findViewById(R.id.chart);
/*1.chart格式設(shè)置*/
mLineChart.setDrawGridBackground(false);//無(wú)背景網(wǎng)格
mLineChart.setDrawBorders(false);
//圖表描述
Description description = new Description();
description.setText("近一周學(xué)習(xí)情況");//描述內(nèi)容
description.setTextColor(0xff000000);//描述字體顏色
description.setTextSize(24f);//描述字體大小
description.setTextAlign(Paint.Align.LEFT);//文字左對(duì)齊
description.setPosition(100,100);//設(shè)置圖表描述
mLineChart.setDescription(description);
mLineChart.setTouchEnabled(false);//可觸摸
mLineChart.setDragEnabled(true);//可拖動(dòng)
mLineChart.setScaleEnabled(true);//可放縮
/*2.獲取坐標(biāo)軸并進(jìn)行設(shè)置*/
//獲取和設(shè)置X軸
XAxis xAxis = mLineChart.getXAxis();//獲取X軸
xAxis.setEnabled(true);//設(shè)置顯示X軸
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//X軸位置
xAxis.setAxisLineWidth(2);//設(shè)置X軸寬度
xAxis.setDrawGridLines(false);//無(wú)網(wǎng)格
xAxis.setDrawAxisLine(true);//顯示X軸
/*X軸數(shù)據(jù)*/
final String[] xValues = {"3.14","3.15","3.16","3.17","3.18","3.19","3.20"};
/*給X軸設(shè)置數(shù)據(jù)*/
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xValues[(int)value];
}
@Override
public int getDecimalDigits() {
return 0;
}
});
//獲取并設(shè)置Y軸
YAxis leftYAxis = mLineChart.getAxisLeft();//獲取左側(cè)Y軸
YAxis rightYAxis = mLineChart.getAxisRight();//獲取右側(cè)Y軸
rightYAxis.setEnabled(false);//禁止顯示右側(cè)Y軸
leftYAxis.setAxisLineWidth(2);
leftYAxis.setDrawGridLines(false);
/*leftYAxis.setStartAtZero(true);//設(shè)置從零開(kāi)始顯示*/
/*3.添加數(shù)據(jù)*/
ArrayList<Entry> entries1 = new ArrayList<>();//Entry就是折線圖上的點(diǎn)
entries1.add(new Entry(0,85));
entries1.add(new Entry(1,88));
entries1.add(new Entry(2,75));
entries1.add(new Entry(3,69));
entries1.add(new Entry(4,95));
entries1.add(new Entry(5,77));
entries1.add(new Entry(6,88));
ArrayList<Entry> entries2 = new ArrayList<>();
entries2.add(new Entry(0,75));
entries2.add(new Entry(1,88));
entries2.add(new Entry(2,55));
entries2.add(new Entry(3,79));
entries2.add(new Entry(4,85));
entries2.add(new Entry(5,97));
entries2.add(new Entry(6,78));
/*LineDataSet是點(diǎn)的集合,連成線*/
LineDataSet lineDataSet1 = new LineDataSet(entries1,"Listen");
lineDataSet1.setColor(0xff3f51b5);
LineDataSet lineDataSet2 = new LineDataSet(entries2,"speech");
lineDataSet2.setColor(0xffff4081);
/*線條的集合(可以添加多條線)*/
List<ILineDataSet> dataSets = new ArrayList<>();
dataSets.add(lineDataSet1);
dataSets.add(lineDataSet2);
/*要給Chart設(shè)置的數(shù)據(jù)(將dataSets作為數(shù)據(jù)對(duì)象)*/
LineData lineData = new LineData(dataSets);
mLineChart.setData(lineData);//設(shè)置數(shù)據(jù)
mLineChart.invalidate();//刷新顯示
}
}