android 图表框架 hellochart columnchart属性 其他同类

xiaoxiao2021-02-28  166

1.先看需求

这个图,简单吗,一看没啥:

2.那些属相很重要

坐标颜色,坐标字体,大小,颜色, 柱状图颜色,lab的背景,字体大小,颜色, 横坐标,自适应,不是自动,原来我弄反了 横坐标最大的字数,很重要

3.hellocharts 的纵坐标自适应显示

3.1网络上一个技术,修改rangecolor,发现不可以

用到了,别人的技术:http://blog.csdn.net/androidtalent/article/details/52290051 针对chart // Viewport v = new Viewport(rainChart.getMaximumViewport()); // v.left = 0; // v.right= 7; // rainChart.setCurrentViewport(v);

3.2最后,还是用的属性,设置最大宽度

axisX.setMaxLabelChars(10) ;//设置X轴标签可显示的最大字符个数,范围0-32之间 //axisY.setMaxLabelChars(8) ;

后期,将这些属性,整理一下

4.属性来了

把代码都拿出来,纵坐标,采用四分法,最大值,分四份

/** * 更新图表数据 * * @param rainChart * @param mHRList */ private ColumnChartData updateRainChartData(ColumnChartView rainChart, ArrayList<HStationRainHistory> mHRList) { int numSubcolumns = 1; int numColumns = mHRList.size(); columns = new ArrayList<Column>(); //x cross data ArrayList<AxisValue> axisValuesX = new ArrayList<AxisValue>(); ArrayList<AxisValue> axisValesY = new ArrayList<AxisValue>(); //y cross data for (int i = numColumns - 1, j = 0; i >= 0 && j < numColumns; i--, j++) { List<SubcolumnValue> values = new ArrayList<SubcolumnValue>(); HStationRainHistory history = mHRList.get(i); float num = history.getCountDay(); values.add(new SubcolumnValue(num, Color.parseColor("#0080fc"))); Column column = new Column(values); column.setHasLabels(true); column.setHasLabelsOnlyForSelected(true); columns.add(column); //装填x轴数据 // LogUtils.e("sjt","data j="+j+"dat===="+mHRList.get(i).getDateDay()); axisValuesX.add(new AxisValue(j).setLabel(mHRList.get(i).getDateDay())); } ColumnChartData data = new ColumnChartData(columns);//图表数据 if (hasAxes) { Axis axisX = new Axis(); Axis axisY = new Axis(); axisX.setValues(axisValuesX);//设置横坐标数据 float maxRain = getMaxRainValue(mHRList); LogUtils.e("sjt", "max数据为" + maxRain); //纵坐标用4分法,想法来自屈陆胜 if (maxRain <= 4.0) { axisValesY.add(new AxisValue(0).setLabel("0.0-")); axisValesY.add(new AxisValue(1).setLabel("1.0-")); axisValesY.add(new AxisValue(2).setLabel("2.0-")); axisValesY.add(new AxisValue(3).setLabel("3.0-")); } else { for (float i = 0; i <= maxRain; i += maxRain / 4.0) { AxisValue value = new AxisValue(i); value.setLabel(String.valueOf(i) + "-"); axisValesY.add(value); } } axisY.setValues(axisValesY);//设置横坐标数据 //坐标轴属性 axisX.setTextSize(10);// 设置X轴文字大小 axisY.setTextSize(10); axisX.setMaxLabelChars(10);//设置X轴标签可显示的最大字符个数,范围0-32之间 //axisY.setMaxLabelChars(8) ; axisX.setTextColor(Color.BLACK);// 设置X轴文字颜色 axisY.setTextColor(Color.parseColor("#999999")); axisX.setHasLines(false);// 是否显示X轴网格线 axisY.setHasLines(false); axisX.setAutoGenerated(false);//设置是否自动生成轴对象,自动适应表格的范围 axisY.setAutoGenerated(false); axisY.setHasSeparationLine(true); data.setAxisXBottom(axisX);//在图表下方设置X轴 data.setAxisYLeft(axisY);//在图表左侧设置Y轴 data.setValueLabelTextSize(8);//设置数据标签的字体大小 data.setValueLabelsTextColor(Color.BLACK);//设置数据标签的字体颜色 data.setValueLabelBackgroundAuto(false);// 设置数据背景是否跟随节点颜色 data.setValueLabelBackgroundEnabled(false);//设置是否有数据背景 (苏景台解读)是否跟随columvalue的颜色变化 data.setValueLabelBackgroundColor(Color.TRANSPARENT);//此处设置坐标点旁边的文字背景 data.setFillRatio(0.7f);//设置组与组之间的间隔比率,取值范围0-1,1表示组与组之间不留任何间隔 } else { data.setAxisXBottom(null); data.setAxisYLeft(null); } return data; } float maxRainValue = 0f; /** * 获得最大雨量数据 * * @param list * @return */ private float getMaxRainValue(List<HStationRainHistory> list) { if (list.size() <= 0) { return maxRainValue; } else if (list.size() == 1) { maxRainValue = list.get(0).getCountDay(); return maxRainValue; } else { for (HStationRainHistory hrh : list) { if (maxRainValue < hrh.getCountDay()) { maxRainValue = hrh.getCountDay(); } } return maxRainValue; } } private class ValueTouchListener implements ColumnChartOnValueSelectListener { @Override public void onValueSelected(int columnIndex, int subcolumnIndex, SubcolumnValue value) { value.setColor(Color.parseColor("#00b5ff")); for (int i=0;i<columns.size();i++){ if (i!=columnIndex){ columns.get(i).getValues().get(0).setColor(Color.parseColor("#0080fc")); } } } @Override public void onValueDeselected() { // TODO Auto-generated method stub } }
转载请注明原文地址: https://www.6miu.com/read-19846.html

最新回复(0)