赞
踩
各个属性介绍地址:http://www.jianshu.com/p/7e8de03dad79
Android studio hellocharts 接入
repositories {
maven {
url "https://jitpack.io"
}
}
dependencies {
//implementation 'com.github.lecho:hellocharts-android:v1.5.8'
implementation 'com.github.lecho:hellocharts-library:1.5.8@aar'
}
private ColumnChartView columnChartView;//柱状图 private ColumnChartData columnChartData;//存放柱状图数据的对象 private boolean hasAxes = true; //是否有坐标轴 private boolean hasAxesNames = false; //是否有坐标轴的名字 private boolean hasLabels = false; //柱子上是否显示标识文字 private boolean hasLabelForSelected = true; //柱子被点击时,是否显示标识的文字 private List<AxisValue> mAxisXValues = new ArrayList<>(); //x轴方向的坐标数据 private List<AxisValue> mColumnAxisYValues = new ArrayList<>(); //y轴方向的坐标数据 //设置X、Y轴的数据 private void initXY() { //设置x轴上面的数据 for (int i = 0; i < chartDataItemBeanList.size(); i++) { mAxisXValues.add(new AxisValue(i).setLabel(chartDataItemBeanList.get(i).getTime().substring(5))); } //设置Y轴上面的数据 for (int i = 0; i < 20; i++) { mColumnAxisYValues.add(new AxisValue(i).setLabel("" + i)); } } /** * 填充数据 */ private void setColumnData() { //柱状图 int numColumns = chartDataItemBeanList.size();//有多少堆数据 List<Column> columns = new ArrayList<>(); List<SubcolumnValue> values; List<Float> columnList = new ArrayList<>(); for (int i = 0; i < numColumns; ++i) { values = new ArrayList();//每一堆有多少列 values.add(new SubcolumnValue(Float.valueOf(chartDataItemBeanList.get(i).getPcipop()), colors[0])); values.add(new SubcolumnValue(Float.valueOf(chartDataItemBeanList.get(i).getVidpop()), colors[1])); columnList.add(Float.valueOf(chartDataItemBeanList.get(i).getPcipop())); columnList.add(Float.valueOf(chartDataItemBeanList.get(i).getVidpop())); Column column = new Column(values); column.setHasLabels(hasLabels); column.setHasLabelsOnlyForSelected(hasLabelForSelected); columns.add(column); } float maxColumnPointY = Collections.max(columnList);//获取Y轴最大值 columnChartData = new ColumnChartData(columns); if (hasAxes) { Axis axisX = new Axis(); Axis axisY = new Axis().setHasLines(true); if (hasAxesNames) {//显示坐标轴名称 axisX.setName("最近7天数据"); axisY.setName("问诊人次"); } axisX.setValues(mAxisXValues);//设置x轴的坐标 //设置Y轴的坐标 axisY.setAutoGenerated(true);//自动填充Y轴坐标 // axisY.setValues(mColumnAxisYValues);//手动填充Y轴坐标 columnChartData.setAxisXBottom(axisX); columnChartData.setAxisYLeft(axisY); } else { columnChartData.setAxisXBottom(null); columnChartData.setAxisYLeft(null); } columnChartView.setZoomEnabled(false);是否支持缩放 设置是否可以选中图表中的值,即当点击图表中的数据值后,会一直处于选中状态,直到用户点击其他空间。默认为false。 columnChartView.setValueSelectionEnabled(true); columnChartView.setColumnChartData(columnChartData);//填充数据 Viewport columnView = new Viewport(columnChartView.getMaximumViewport()); //Y轴最大值为 加上2、防止显示不全 columnView.top = maxColumnPointY + 2; columnChartView.setCurrentViewport(columnView); }
代码调用
initXY();
setColumnData();
private LineChartView lineChartView;//折线图 private LineChartData lineChartData;//存放折线图数据的对象 //设置X、Y轴的数据 private void initXY() { //设置x轴上面的数据 for (int i = 0; i < chartDataItemBeanList.size(); i++) { mAxisXValues.add(new AxisValue(i).setLabel(chartDataItemBeanList.get(i).getTime().substring(5))); } //设置Y轴上面的数据 for (int i = 0; i < 5; i++) { mLineAxisYValues.add(new AxisValue(i).setLabel("" + i * 500)); } } /** * 折线图填充数据 */ private void setLineChartData() { //X轴数据点 List<PointValue> mPointValues = new ArrayList<>(); // //获取list中最大最小值 (纯属打印、非必须) List<Float> list = new ArrayList<>(); for (int i = 0; i < chartDataItemBeanList.size(); i++) { //数据点 mPointValues.add(new PointValue(i, Float.valueOf(chartDataItemBeanList.get(i).getTotalmoney()))); //将所有点添加至新list中 list.add(Float.valueOf(chartDataItemBeanList.get(i).getTotalmoney())); } float maxPoint = Collections.max(list); float minPoint = Collections.min(list); Line line = new Line(mPointValues); //存放线条的集合 List<Line> lines = new ArrayList<>(); //LineChartValueFormatter chartValueFormatter = new SimpleLineChartValueFormatter(2); //line.setFormatter(chartValueFormatter);//显示小数点(后2位) // line.setHasLabels(true);//曲线的数据坐标是否加上备注 line.setHasLabelsOnlyForSelected(true);//点击数据坐标提示数据(设置了这个line.setHasLabels(true);就无效) line.setShape(ValueShape.CIRCLE);//折线图上每个数据点的形状 这里是圆形 ( //有三种 :ValueShape.SQUARE(方形) ValueShape.CIRCLE(圆形) ValueShape.DIAMOND (菱形)) line.setPointRadius(3);//坐标点大小 line.setCubic(true);//曲线是否平滑 line.setFilled(true);//是否填充曲线的面积 line.setHasLines(true);//是否用直线显示。如果为false 则没有曲线只有点显示 line.setHasPoints(true);//是否显示圆点 如果为false 则没有原点只有点显示 line.setColor(Color.parseColor("#037BFF")); line.setStrokeWidth(1);//设置线的宽度 lines.add(line); lineChartData = new LineChartData(); lineChartData.setLines(lines); //设置数据的初始值,即所有的数据从baseValue开始计算,默认值为0。 lineChartData.setBaseValue(0f); Axis axisX = new Axis(); Axis axisY = new Axis().setHasLines(true); if (hasAxesNames) {//显示坐标轴名称 axisX.setName("最近7天数据"); axisY.setName("问诊收入"); } //设置x轴的坐标 axisX.setValues(mAxisXValues); axisX.setHasTiltedLabels(true); //设置Y轴的坐标 // axisY.setValues(mLineAxisYValues);//手动填充纵坐标数据 axisY.setAutoGenerated(true);//自定义纵坐标数据 axisY.setInside(true);//坐标数据显示在内测 lineChartData.setAxisXBottom(axisX); lineChartData.setAxisYLeft(axisY); lineChartView.setZoomEnabled(false);//是否支持缩放 lineChartView.setValueSelectionEnabled(true);//设置是否可以选中图表中的值,即当点击图表中的数据值后,会一直处于选中状态,直到用户点击其他空间。默认为false。 lineChartView.setLineChartData(lineChartData); Viewport v = new Viewport(lineChartView.getMaximumViewport()); //Y轴最大值为 加上20、防止显示不全 v.top = maxPoint + 20; //最小值 Y轴最低点就为0 if(minPoint-100 < 0){ v.bottom = 0; }else { v.bottom = minPoint-100;//最小值 } //设置最大化的viewport (chartdata)后再调用 //这2个属性的设置一定要在lineChart.setMaximumViewport(v);这个方法之后,不然显示的坐标数据是不能左右滑动查看更多数据的 lineChartView.setMaximumViewport(v); //左边起始位置 轴 v.left = 0; //如果数据点超过7,显示7个、否则,显示数据本身大小{自己根据需求设置} if (chartDataItemBeanList.size() > 7) { // Y轴显示多少数据 v.right = 7; } else { v.right = 7; } //左右滑动 lineChartView.setCurrentViewport(v); }
代码调用
initXY();
setLineChartData();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。