MPAndroidChart直方图、多组(可滑动、渐变可以看博主前面讲直方图的博客)
来源:互联网 发布:java通用版uc浏览下载 编辑:程序博客网 时间:2024/05/29 09:59
分组直方图
代码
private void showBarChart() { setBarChartProperties(); setBarChartMarkView(); setXAxis(); setYAxis(); setBarChartLegend(); setBarChartData(xListValue.size(),yListValue); } private void setBarChartProperties() { mBarChart.setDrawBarShadow(false);//设置阴影为false mBarChart.setDrawValueAboveBar(false);//这里设置为true每一个直方图的值就会显示在直方图的顶部 mBarChart.getDescription().setEnabled(false);//设置描述不显示 mBarChart.setPinchZoom(false); mBarChart.setDrawGridBackground(false);//设置不显示网格 //mbarchart.setMaxVisibleValueCount(60); float ratio = (float) xListValue.size()/(float) 10; mBarChart.zoom(ratio,1f,0,0);//显示的时候是按照多大的比率缩放显示 1f表示不放大缩小 //我默认手机屏幕上显示10 剩下的滑动直方图 然后显示。。假如要显示25个 那么除以10 就是放大2.5f。。同理 // 56个民族 那么放大5.6f mBarChart.animateY(1500);//从Y轴弹出的动画时间 //mBarChart.getLegend().setEnabled(false);//设置不显示比例图 mBarChart.setScaleEnabled(false);//设置是否可以缩放 mBarChart.setTouchEnabled(true);//设置是否可以触摸 mBarChart.setDragEnabled(true);//设置是否可以拖拽 }
//定义点击直方图顶部弹出的类似popuwindow的标记private void setBarChartMarkView() { // create a custom MarkerView (extend MarkerView) and specify the layout // to use for it PandectMarkerView mv = new PandectMarkerView(getActivity(), R.layout.custom_marker_view); mv.setChartView(mBarChart); // For bounds control mBarChart.setMarker(mv); // Set the marker to the chart }
private void setXAxis() { //自定义设置横坐标 IAxisValueFormatter xValueFormatter = new PandectModelFourXValueFormatter(xListValue); //设置不显示网格线,保留水平线 XAxis xAxis = mBarChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawAxisLine(true); xAxis.setDrawGridLines(false); xAxis.setGranularity(1f); //xAxis.setLabelCount(xListValue.size());//设置横坐标显示多少个 xAxis.setLabelCount(10);//一个界面显示10个Lable。那么这里要设置11个 xAxis.setCenterAxisLabels(true);//字体下面的标签 显示在每个直方图的中间 xAxis.setValueFormatter(xValueFormatter);//将自定义的横坐标设置上去 xAxis.setLabelRotationAngle(-40f); }
private void setYAxis() { //左边Y轴 YAxis leftYAxis = mBarChart.getAxisLeft(); leftYAxis.setDrawGridLines(true);//设置从Y轴左侧发出横线 leftYAxis.setAxisMinimum(0f); leftYAxis.setEnabled(true);//设置显示左边Y坐标 //右边Y轴 YAxis rightYAxis = mBarChart.getAxisRight(); rightYAxis.setEnabled(false);//设置隐藏右边y坐标 }
private void setBarChartLegend() { Legend l = mBarChart.getLegend(); l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER); l.setOrientation(Legend.LegendOrientation.HORIZONTAL); l.setDrawInside(false); l.setYOffset(0f); l.setXOffset(10f); l.setFormSize(8f); l.setXEntrySpace(4f); l.setEnabled(true);//设置显示比例图 }
private int[] mColors = new int[] { Color.parseColor("#C23531"), Color.parseColor("#2F4554") }; private void setBarChartData(int count, ArrayList<ArrayList<Float>> yListValue) { // 这里是通用的设置 float groupSpace = 0.12f; //柱状图组之间的间距 float barSpace = (float) ((1 - 0.12) / yListValue.size() / 10); // x4 DataSet float barWidth = (float) ((1 - 0.12) / yListValue.size() / 10 * 9); // x4 DataSet //满足的规则:(barWidth + barSpace)*4 + groupSpace = 1.00 -> interval per "group" int startYear = 0; ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>(); for(int i=0;i<yListValue.size();i++){ ArrayList<BarEntry> yValues = new ArrayList<>(); for(int j=0;j<count;j++){ yValues.add(new BarEntry(j,yListValue.get(i).get(j))); } BarDataSet set = new BarDataSet(yValues,lableNames.get(i)); set.setDrawIcons(false);//设置直方图上面时候显示图标 set.setColor(mColors[i%mColors.length]); dataSets.add(set); } BarData data = new BarData(dataSets); data.setValueFormatter(new LargeValueFormatter()); data.setValueTextSize(10f);//设置直方图上面文字的大小 data.setBarWidth(0.9f);//设置直方图的宽度 data.setValueTextColor(Color.WHITE); data.setDrawValues(true);//设置直方图上面的值显示 //data.setBarWidth(barWidth);//直方图的宽度 data.setDrawValues(false);//设置不显示值 mBarChart.setData(data);//设置值 mBarChart.getBarData().setBarWidth(barWidth);//设置直方图每个bar的宽度 // restrict the x-axis range mBarChart.getXAxis().setAxisMinimum(startYear);//设置X轴的最小值从startYear开始 //要实现分组下面的代码必须实现,博主理解的不清楚,虽然简单地懂 不好意思 O(∩_∩)O // barData.getGroupWith(...) is a helper that calculates the width each group needs based on the provided parameters mBarChart.getXAxis().setAxisMaximum(startYear + mBarChart.getBarData().getGroupWidth(groupSpace, barSpace) * count); //起始点、直方图组间距、直方图之间的间距 mBarChart.groupBars(startYear, groupSpace, barSpace); mBarChart.invalidate(); }
阅读全文
0 0
- MPAndroidChart直方图、多组(可滑动、渐变可以看博主前面讲直方图的博客)
- MPAndroidChart直方图使用(BarChart),渐变,滑动
- MPAndroidChart直方图(BarChart),渐变,左右滑动
- Android MPAndroidCharts 框架 画可滑动查看的直方图
- Android MPAndroidChart 直方图,曲线这,折线图的运用。
- 用MPAndroidChart实现可滑动的柱状图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- 直方图
- #define函数
- python安装opencv
- goto的替换
- 一个shell脚本实现linux集群所有机器免密钥登录
- kafka+storm整合代码
- MPAndroidChart直方图、多组(可滑动、渐变可以看博主前面讲直方图的博客)
- 日常笔记(不定时更新)
- 泛型
- studio得到系统时间
- 关于如何将Module修改为LIbrary,以及在主项目中跳转到Library的activity遇到的坑
- 基于qt,opencv交互式的graphcuts算法的实现
- 在linux上安装redis
- 插入排序 @ Python
- 图像处理实例--Retinex增强处理