AndroidMPChart的获取
依赖:
Project 的build.gradle文件中添加
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
然后在 module中的build,gradle 中添加
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
布局文件:
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/full_barChart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
初始化BarChart:
//清除历史设置
barChart.clear();
//无数据时的显示文本
barChart.setNoDataText("暂无内容");
//无数据时设置数据为空
barChart.setData(null);
//设置是否缩放
barChart.setScaleEnabled(false);
/*
* 图表设置
* */
//背景颜色
barChart.setBackgroundColor(Color.WHITE);
//是否显示图表网格
barChart.setDrawGridBackground(false);
//是否显示背景阴影
barChart.setDrawBarShadow(false);
//设置是否高亮显示
barChart.setHighlightFullBarEnabled(false);
//设置是否显示描述
barChart.getDescription().setEnabled(false);
//设置是否显示边框
barChart.setDrawBorders(false);
//设置动画效果
barChart.animateY(1000, Easing.EasingOption.Linear);
barChart.animateX(1000, Easing.EasingOption.Linear);
/*XY轴的设置*/
//x轴设置显示位置在底部
XAxis xAxis = barChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//第一个参数是X轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
xAxis.setLabelCount(2, false);
//不显示网格线
xAxis.setDrawGridLines(false);
//不显示轴线
xAxis.setDrawAxisLine(false);
//设置为true当一个页面显示条目过多,X轴值隔一个显示一个
xAxis.setGranularityEnabled(true);
//设置最小间隔,防止当放大时,出现重复标签。
xAxis.setGranularity(1f);
//设置滑动
//一个界面最少显示多少个点
barChart.setVisibleXRangeMinimum(0);
//一个界面最大显示多少个点,其余滑动显示
barChart.setVisibleXRangeMaximum(6);
//自定义x轴标签
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return "";
}
});
//y轴
//左y轴
YAxis leftAxis = barChart.getAxisLeft();
//右y轴
YAxis rightAxis = barChart.getAxisRight();
//保证Y轴从0开始,不然会上移一点
leftAxis.setAxisMinimum(0f);
//设置右y轴是否显示
rightAxis.setEnabled(false);
//是否显示y坐标轴上的刻度竖线,默认是true
leftAxis.setDrawAxisLine(false);
//设置为true当一个页面显示条目过多,X轴值隔一个显示一个
leftAxis.setGranularityEnabled(true);
//设置最小间隔,防止当放大时,出现重复标签。
leftAxis.setGranularity(1f);
//设置y轴显示最大标签数
leftAxis.setAxisMaximum(6);
//第一个参数是X轴坐标的个数,第二个参数是 是否不均匀分布,true是不均匀分布
leftAxis.setLabelCount(leftYLable, false);
/*折线图例 标签 设置*/
Legend legend = barChart.getLegend();
legend = barChart.getLegend();
//图例样式
legend.setForm(Legend.LegendForm.NONE);
//图例文本大小
legend.setTextSize(12f);
//图例文本颜色
legend.setTextColor(Color.BLACK);
//显示位置
//垂直时位置
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
//水平时位置
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
//方向
legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
//是否绘制在图表里面
legend.setDrawInside(false);
设置数据:
ArrayList<BarEntry> entries = new ArrayList<>();
BarEntry barEntry = null;// 数据结构
BarDataSet barDataSet = null;// 代表一个柱状图
for (int i = 0; i < list.size; i++) {
/**
* 此处还可插入Drawable对象,barEntry(float x, float y,Drawable icon)
* 即可设置柱状图顶部的icon展示
* */
VtDateValueBean vtDateValueBean = list.get(i);//获取点对象
float preValue = Float.parseFloat(vtDateValueBean.getPreValue());//获取y轴
barEntry = new BarEntry(i, preValue);
entries.add(barEntry);
}
//每一个BarDataSet代表一类柱状图
barDataSet = new BarDataSet(entries, "柱状图");
//设置柱状图颜色 (不同颜色)
barDataSet.setColors(colorlist);
//设置柱状图颜色 (统一颜色)
barDataSet.setColor(Color.BLACK);
//设置图例宽度
barDataSet.setFormLineWidth(1f);
//设置图例大小
barDataSet.setFormSize(15.f);
//不显示柱状图顶部值
barDataSet.setDrawValues(true);
//设置顶部值字体大小
barDataSet.setValueTextSize(11f);
//设置顶部值字体颜色 (不同颜色)
barDataSet.setValueTextColors(colorlist);
//设置顶部值字体颜色 (统一颜色)
barDataSet.setValueTextColor(Color.BLACK);
barDataSet.setHighlightEnabled(false);
// //添加多个BarDataSet时
// ArrayList<IBarDataSet> dataSets=new ArrayList<>();
// dataSets.add(barDataSet);
// BarData data = new BarData(dataSets);
BarData bardata = new BarData(barDataSet);
// 格式化显示
bardata.setValueFormatter(new IValueFormatter() {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
DecimalFormat fnum = new DecimalFormat("##0.00");
return fnum.format(value);
}
});
//设置柱体宽度
bardata.setBarWidth(0.08f);
//设置数据
barChart.setData(bardata);
barChart.invalidate();