在MPAndroidChart初次使用(1)——饼状图有讲一部分问题,可以先看这个。
效果图
1. 添加依赖
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
}
2. XML界面
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/line_chart"
android:layout_width="match_parent"
android:layout_margin = "5dp"
android:layout_height="200dp"
app:layout_constraintTop_toBottomOf="@+id/title_context"
/>
3. 实现代码
// 折线图部分
LineChart lineChart = (LineChart)root.findViewById(R.id.line_chart);
// 数据部分
ArrayList<Entry> times_data = new ArrayList<Entry>();
times_data.add(new Entry(0, 1));
times_data.add(new Entry(1, 12));
times_data.add(new Entry(2, 13));
times_data.add(new Entry(3, 21));
times_data.add(new Entry(4, 34));
times_data.add(new Entry(5, 45));
times_data.add(new Entry(6, 15));
times_data.add(new Entry(7, 6));
times_data.add(new Entry(8, 17));
times_data.add(new Entry(9, 18));
times_data.add(new Entry(10, 9));
times_data.add(new Entry(11, 10));
times_data.add(new Entry(12, 11));
times_data.add(new Entry(13, 12));
times_data.add(new Entry(14, 13));
times_data.add(new Entry(15, 14));
times_data.add(new Entry(16, 15));
times_data.add(new Entry(17, 16));
times_data.add(new Entry(18, 17));
times_data.add(new Entry(19, 18));
times_data.add(new Entry(20, 19));
times_data.add(new Entry(21, 20));
times_data.add(new Entry(22, 21));
times_data.add(new Entry(23, 22));
LineDataSet timeslineData = new LineDataSet(times_data,"学习");
LineData data = new LineData(timeslineData);
lineChart.setData(data);
// 去除description
Description description = new Description();
description.setEnabled(false);
lineChart.setDescription(description);
// 去除对图标的触摸操作,如果没有去除,可以通过触摸对折线图进行
// 放大,缩小等操作。
lineChart.setTouchEnabled(false);
// 将折现转变位曲线
timeslineData.setMode(LineDataSet.Mode.CUBIC_BEZIER);
// 设置曲线颜色
timeslineData.setColor(BLACK);
// 不显示圆点(默认是在每个数据点为蓝色小圆圈)
timeslineData.setDrawCircles(false);
// 不显示数据点的数值
timeslineData.setDrawValues(false);
// X轴处理
XAxis xAxis = lineChart.getXAxis();
// 设置X轴的位置为正下方
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
// 设置X轴坐标的刻度,即X轴上出现几个刻度
xAxis.setLabelCount(7);
// 去除X轴上网格竖线
xAxis.setDrawGridLines(false);
// 避免“剪掉”在x轴上的图表或屏幕边缘的第一个和最后一个坐标轴标签项
xAxis.setAvoidFirstLastClipping(true);
// 自定义X轴上的刻度显示
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int) value + "时";
}
});
lineChart.invalidate();
// Y轴处理
YAxis ylAxis =lineChart.getAxis(YAxis.AxisDependency.LEFT);
// 设置Y轴的最大值
ylAxis.setAxisMaximum(300);
// Y轴横线设置为虚线
ylAxis.enableGridDashedLine(20, 15, 0);
// 自定义Y轴的刻度显示
ylAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int) value + "分钟";
}
});
// 隐藏右侧Y轴(默认的折线图是左右两侧各一条Y轴)
YAxis yrAxis = lineChart.getAxisRight();
yrAxis.setEnabled(false);
// 去掉 Legend
Legend legend = lineChart.getLegend();
legend.setEnabled(false);