MPAndroidChart的基本使用
1.依赖的添加
Gradle
- Project level
build.gradle(
在project的build.gradle中添加依赖)
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
- App level
build.gradle(
在app的build.gradle中添加依赖)
dependencies {
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
}
LineChart(折线图的简单使用)
private void initLineChart(List<Entry> entries, String label) {
//传入需要绘制折线的数据,以及标签描述(该属性多用来设置点和线的相关属性)
LineDataSet lineDataSet = new LineDataSet(entries, label);
//设置圆点的颜色
lineDataSet.setCircleColor(Color.RED);
//设置折线的颜色
lineDataSet.setColor(Color.RED);
//设置是否绘制点的圆孔,默认true
lineDataSet.setDrawCircleHole(false);
//设置圆孔的大小(较为少用,了解即可)
lineDataSet.setCircleRadius(1.0f);
//设置该属性为false后,将仅显示折线,不显示绘制点以及绘制值
lineDataSet.setDrawValues(false);
//设置折线是否可见
lineDataSet.setVisible(false);
//对图的标签进行重设
lineDataSet.setLabel("ance");
//设置你点击后的高光指示器,没什么鸟用(了解一下即可)
lineDataSet.setDrawVerticalHighlightIndicator(false);//垂直
lineDataSet.setDrawHorizontalHighlightIndicator(false);//水平
lineDataSet.setDrawHighlightIndicators(false);//他俩一起设置
//行数据,多于点的相关属性有关,比如绘制值
LineData lineData = new LineData(lineDataSet);
//设置是否绘制点的值
lineData.setDrawValues(false);
//设置文本值的颜色
lineData.setValueTextColor(Color.RED);
//设置文本值的大小
lineData.setValueTextSize(10.0f);
//格式化绘制值
lineData.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return super.getFormattedValue(value) + "ance";
}
});
//设置值的字体属性,具体没设置过
lineData.setValueTypeface();
//设置数据
lineChart.setData(lineData);
//关闭右下角的描述,官方文档给出的setDescription()似乎不能通过true or false来设置了,改用这种方法
lineChart.getDescription().setEnabled(false);
//设置无数据时显示的文本
lineChart.setNoDataText("");
//设置折线图的背景
lineChart.setBackgroundColor(Color.RED);
//实例x轴
XAxis xAxis = lineChart.getXAxis();
//设置x轴的位置,默认在顶部
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//设置x轴的标签个数
xAxis.setLabelCount(entries.size());
//设置x轴的粒度,
xAxis.setGranularity(1.0f);
//是否绘制x轴的网格线
xAxis.setDrawGridLines(false);
//格式x轴
xAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float value) {
return super.getFormattedValue(value);
}
});
//设置x轴位置的偏移
xAxis.setXOffset(20.0f);
//设置x轴的最大和最小值
xAxis.setAxisMinimum(0);
xAxis.setAxisMaximum(100);
//设置x轴的标签文本属性,具体可参考上文
xAxis.setTextColor();
xAxis.setTextSize();
//y轴分为左轴与右轴,两者的设置大同小异,这里以y左轴作为展示
YAxis yAxis_right = lineChart.getAxisRight();
//禁用y右轴
yAxis_right.setEnabled(false);
//y左轴实例
YAxis yAxis_left = lineChart.getAxisLeft();
//设置是否绘制网格线
yAxis_left.setDrawGridLines(false);
//这里的一些其他属性将不再重复列举,与x轴的设置大致相同
yAxis_left.setGranularity(1.0f);
yAxis_left.setAxisMinimum(0);
//y轴独有的零线
yAxis_left.setDrawZeroLine(true);
//设置零线的颜色与宽度
yAxis_left.setZeroLineColor();
yAxis_left.setZeroLineWidth();
//设置警戒线,一些颜色大小等属性将不再赘述,与上文相同
LimitLine line = new LimitLine(16f, "警告警告");
//添加警戒线
yAxis_left.addLimitLine(line);
//图例
Legend legend = lineChart.getLegend();
//设置图例在x y的偏移,不过设置起来似乎没有效果,不知道是属性问题还是笔者设置的问题
legend.setXEntrySpace(50f);
legend.setYEntrySpace(50f);
//设置图例的方向
legend.setOrientation(Legend.LegendOrientation.VERTICAL);
//设置水平对其
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
//设置垂直对其
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.CENTER);
//关闭图例
legend.setEnabled(false);
//其他的基本属性与上文相同,可自行测试
}