MPAndroidChart GitHub地址https://github.com/PhilJay/MPAndroidChart
一个强大的Android图表视图/图形视图库,支持直线-条形-饼-雷达-气泡-烛台图以及缩放、平移和动画。
今天使用这个库生成一个折线图,先看效果图
先来初始化表格属性,
private void initLineChart(){
//设置线状图不显示描述
heartRateLineChart.setDescription(null);
//Y 自下往上动态绘制 这里添加初始的动画效果
heartRateLineChart.animateY(1000);
//获取柱状图的X轴
XAxis xAxis = heartRateLineChart.getXAxis();
//下面两个是获取Y轴 包括左右
YAxis axisLeft = heartRateLineChart.getAxisLeft();
YAxis axisRight = heartRateLineChart.getAxisRight();
//设置XY轴
setAXis(xAxis,axisLeft,axisRight);
}
/*
* 设置折线图的XY轴
* */
public void setAXis(XAxis axis,YAxis axisLeft,YAxis axisRight){
//设置X轴在图底部显示
axis.setPosition(XAxis.XAxisPosition.BOTTOM);
//设置X轴的宽度
axis.setAxisLineWidth(1);
axis.setAxisLineColor(Color.BLACK);
//起始0坐标开始
axis.setAxisMinimum(0);
//设置X轴显示轴线
axis.setDrawAxisLine(true);
//x的表格线不显示
axis.setDrawGridLines(false);
//设置X轴显示
axis.setEnabled(true);
//x轴显示字符串
axis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
// private String[] mLableXHeartRate = new String[]{"初始","休息区","热身区","燃脂区","有氧运动","无氧运动","最大心率"};
return mLableXHeartRate[(int)value];
}
});
//
axis.setLabelCount(7,true);
//y轴0刻度
axisLeft.setAxisMinimum(30);
//不画网格线
axisLeft.setDrawGridLines(false);
axisLeft.setAxisLineColor(Color.BLACK);
//显示Y轴轴线
axisLeft.setDrawAxisLine(true);
axisLeft.setAxisLineWidth(1);
axisLeft.setEnabled(true);
axisLeft.setDrawLabels(true);
//不显示右Y轴
axisRight.setEnabled(false);
}
//接下来就是设置数据了
//Y轴的数据 根据自己的实际情况放入集合中就行
private List<Integer> mLableYHeartRate = new ArrayList<>();
/*
* 设置折线图数据
* @return BarData
* */
public LineData setLineData(){
//X轴就是0-6
List<Entry> mListEnryMin = new ArrayList<>();
for (int i = 0; i < mLableXHeartRate.length; i++) {
//添加x,y坐标的值
mListEnryMin.add(new Entry(i,mLableYHeartRate.get(i)));
}
LineDataSet barDataSet = new LineDataSet(mListEnryMin,"心率区间");
//设置线条颜色为红色
barDataSet.setColors(Color.parseColor("#ff0000"));
//设置折线图转择点的值的大小
barDataSet.setValueTextSize(12);
LineData lineData = new LineData(barDataSet);
return lineData;
}
更新数据
heartRateLineChart.setData(setLineData());
heartRateLineChart.invalidate();
//布局
<com.github.mikephil.charting.charts.LineChart
android:layout_width="match_parent"
android:layout_height="@dimen/dp_200"
android:id="@+id/heart_rate_line_chart"
android:padding="@dimen/dp_12"
android:background="@color/white"
/>
这样就简单的生成了一个折线图,