一幅簡單的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.設置Chart格式
* 2.獲取坐標軸并設置坐標軸的格式
* 3.添加數據
* */
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格式設置*/
mLineChart.setDrawGridBackground(false);//無背景網格
mLineChart.setDrawBorders(false);
//圖表描述
Description description = new Description();
description.setText("近一周學習情況");//描述內容
description.setTextColor(0xff000000);//描述字體顏色
description.setTextSize(24f);//描述字體大小
description.setTextAlign(Paint.Align.LEFT);//文字左對齊
description.setPosition(100,100);//設置圖表描述
mLineChart.setDescription(description);
mLineChart.setTouchEnabled(false);//可觸摸
mLineChart.setDragEnabled(true);//可拖動
mLineChart.setScaleEnabled(true);//可放縮
/*2.獲取坐標軸并進行設置*/
//獲取和設置X軸
XAxis xAxis = mLineChart.getXAxis();//獲取X軸
xAxis.setEnabled(true);//設置顯示X軸
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//X軸位置
xAxis.setAxisLineWidth(2);//設置X軸寬度
xAxis.setDrawGridLines(false);//無網格
xAxis.setDrawAxisLine(true);//顯示X軸
/*X軸數據*/
final String[] xValues = {"3.14","3.15","3.16","3.17","3.18","3.19","3.20"};
/*給X軸設置數據*/
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xValues[(int)value];
}
@Override
public int getDecimalDigits() {
return 0;
}
});
//獲取并設置Y軸
YAxis leftYAxis = mLineChart.getAxisLeft();//獲取左側Y軸
YAxis rightYAxis = mLineChart.getAxisRight();//獲取右側Y軸
rightYAxis.setEnabled(false);//禁止顯示右側Y軸
leftYAxis.setAxisLineWidth(2);
leftYAxis.setDrawGridLines(false);
/*leftYAxis.setStartAtZero(true);//設置從零開始顯示*/
/*3.添加數據*/
ArrayList<Entry> entries1 = new ArrayList<>();//Entry就是折線圖上的點
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是點的集合,連成線*/
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設置的數據(將dataSets作為數據對象)*/
LineData lineData = new LineData(dataSets);
mLineChart.setData(lineData);//設置數據
mLineChart.invalidate();//刷新顯示
}
}