Android MpAndroidChart使用流程和坑--组合图
来源:互联网 发布:win7右下角网络感叹号 编辑:程序博客网 时间:2024/05/19 22:59
CombinedChart
借鉴博客https://github.com/PhilJay/MPAndroidChart
http://www.jianshu.com/p/587946813a78
饼状图可以详见:http://blog.csdn.net/androidwubo/article/details/72922158
柱状图可以详见:http://blog.csdn.net/androidwubo/article/details/72918612
该项目的源码:https://github.com/Orion-wubo/orion
步骤:CombinedChart
1、引用(三种方式,不一一介绍了,看github)
2、根据需求选择相应的表
折线图 LineChart
条形图 BarChart
条形折线图 Combined-Chart
圆饼图 PieChart
雷达图 ScatterChart
K线图 CandleStickChart
泡泡图 BubbleChart
网状图 RadarChart
3、获取相应控件
mChart = (CombinedChart) findViewById(R.id.chart1);
注:设置屏幕横向、全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
4、设置图标
mChart.getDescription().setEnabled(false);
mChart.setBackgroundColor(Color.WHITE);
mChart.setDrawGridBackground(false);
mChart.setDrawBarShadow(false);
mChart.setHighlightFullBarEnabled(false);
//设置组合图都有那个(官方demo里面有四种,我们需求两种,就用两个,后面的在前面的渲染上面)
mChart.setDrawOrder(new CombinedChart.DrawOrder[]{
CombinedChart.DrawOrder.BAR, CombinedChart.DrawOrder.LINE});
//设置图标说明(这个通用,比较简单,不注释了)
//设置自定义mark(参考第二个博客)
5、设置x、y轴数据(这个基本上都一样)
//x轴数据
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setCenterAxisLabels(true);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
xAxis.setLabelCount(areaname.length,false);
xAxis.setAxisMaximum(areaname.length);
xAxis.setAxisMinimum(0f);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return areaname[(int) ((value + areaname.length)%areaname.length)];
}
});
//y轴数据
IAxisValueFormatter custom = new LeftData();
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(true);
leftAxis.setLabelCount(4, false);
leftAxis.setValueFormatter(custom);
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
leftAxis.setSpaceTop(0f);
/**
* 如果设置了最大最小,那么不能动态计算轴的值
*/
leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
// leftAxis.setAxisMaximum(160f); //动态设置最大,
IAxisValueFormatter custom2 = new RightData();
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
rightAxis.setLabelCount(4, false);
rightAxis.setValueFormatter(custom2);
rightAxis.setSpaceTop(0f);
rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)f
// rightAxis.setAxisMaximum(60f);
6、设置数据 (这个和之前的都有所不同)
CombinedData data = new CombinedData();
data.setData(generateLineData());//设置线性
data.setData(generateBarData());//设置柱状
mChart.setData(data);
mChart.invalidate();
//线性
LineData d = new LineData();
ArrayList<Entry> entries = new ArrayList<Entry>();
for (int index = 0; index < areaname.length; index++)
/**
* 这个加0.5f特别重要,这样可以使第一个点从数据中间开始
* 不是从y轴开始
*/
entries.add(new Entry(index + 0.5f, (float) (Math.random() * 20)));
LineDataSet set = new LineDataSet(entries, "巡护面积");
set.setColor(rgb("#2d9660"));
set.setLineWidth(2f);
set.setCircleColor(rgb("#2d9660"));
set.setCircleRadius(5f);
set.setFillColor(rgb("#2d9660"));
set.setMode(LineDataSet.Mode.LINEAR);
set.setDrawValues(true);
set.setValueTextSize(10f);
set.setValueTextColor(rgb("#2d9660"));
set.setAxisDependency(YAxis.AxisDependency.LEFT);
d.addDataSet(set);
return d;
//柱状
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
ArrayList<BarEntry> yVals2 = new ArrayList<BarEntry>();
/**
* 给每一条设置数据
*/
for (int i = 0; i < areaname.length; i++) {
yVals1.add(new BarEntry(i, (float) (Math.random() * 50)));
yVals2.add(new BarEntry(i, (float) (Math.random() * 50)));
}
BarDataSet set1, set2;
set1 = new BarDataSet(yVals1, "巡护区域");
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
set1.setColor(rgb("##3498db"));
set2 = new BarDataSet(yVals2, "护林员个数");
set2.setColor(rgb("#e74c3c"));
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
float groupSpace = 0.32f;
float barSpace = 0.04f; // x2 DataSet
float barWidth = 0.3f; // x2 DataSet
//这个计算公式是,(barwidh + barspace) * groupcount + groupspace
// (0.2 + 0.03) * 2 + 0.08 = 1.00 -> interval per "group"
BarData data = new BarData(set1, set2);
data.setBarWidth(barWidth);
data.groupBars(0f, groupSpace, barSpace);
return data;
借鉴博客https://github.com/PhilJay/MPAndroidChart
http://www.jianshu.com/p/587946813a78
饼状图可以详见:http://blog.csdn.net/androidwubo/article/details/72922158
柱状图可以详见:http://blog.csdn.net/androidwubo/article/details/72918612
该项目的源码:https://github.com/Orion-wubo/orion
步骤:CombinedChart
1、引用(三种方式,不一一介绍了,看github)
2、根据需求选择相应的表
折线图 LineChart
条形图 BarChart
条形折线图 Combined-Chart
圆饼图 PieChart
雷达图 ScatterChart
K线图 CandleStickChart
泡泡图 BubbleChart
网状图 RadarChart
3、获取相应控件
mChart = (CombinedChart) findViewById(R.id.chart1);
注:设置屏幕横向、全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
4、设置图标
mChart.getDescription().setEnabled(false);
mChart.setBackgroundColor(Color.WHITE);
mChart.setDrawGridBackground(false);
mChart.setDrawBarShadow(false);
mChart.setHighlightFullBarEnabled(false);
//设置组合图都有那个(官方demo里面有四种,我们需求两种,就用两个,后面的在前面的渲染上面)
mChart.setDrawOrder(new CombinedChart.DrawOrder[]{
CombinedChart.DrawOrder.BAR, CombinedChart.DrawOrder.LINE});
//设置图标说明(这个通用,比较简单,不注释了)
//设置自定义mark(参考第二个博客)
5、设置x、y轴数据(这个基本上都一样)
//x轴数据
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setCenterAxisLabels(true);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
xAxis.setLabelCount(areaname.length,false);
xAxis.setAxisMaximum(areaname.length);
xAxis.setAxisMinimum(0f);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return areaname[(int) ((value + areaname.length)%areaname.length)];
}
});
//y轴数据
IAxisValueFormatter custom = new LeftData();
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setDrawGridLines(true);
leftAxis.setLabelCount(4, false);
leftAxis.setValueFormatter(custom);
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
leftAxis.setSpaceTop(0f);
/**
* 如果设置了最大最小,那么不能动态计算轴的值
*/
leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
// leftAxis.setAxisMaximum(160f); //动态设置最大,
IAxisValueFormatter custom2 = new RightData();
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setDrawGridLines(false);
rightAxis.setLabelCount(4, false);
rightAxis.setValueFormatter(custom2);
rightAxis.setSpaceTop(0f);
rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)f
// rightAxis.setAxisMaximum(60f);
6、设置数据 (这个和之前的都有所不同)
CombinedData data = new CombinedData();
data.setData(generateLineData());//设置线性
data.setData(generateBarData());//设置柱状
mChart.setData(data);
mChart.invalidate();
//线性
LineData d = new LineData();
ArrayList<Entry> entries = new ArrayList<Entry>();
for (int index = 0; index < areaname.length; index++)
/**
* 这个加0.5f特别重要,这样可以使第一个点从数据中间开始
* 不是从y轴开始
*/
entries.add(new Entry(index + 0.5f, (float) (Math.random() * 20)));
LineDataSet set = new LineDataSet(entries, "巡护面积");
set.setColor(rgb("#2d9660"));
set.setLineWidth(2f);
set.setCircleColor(rgb("#2d9660"));
set.setCircleRadius(5f);
set.setFillColor(rgb("#2d9660"));
set.setMode(LineDataSet.Mode.LINEAR);
set.setDrawValues(true);
set.setValueTextSize(10f);
set.setValueTextColor(rgb("#2d9660"));
set.setAxisDependency(YAxis.AxisDependency.LEFT);
d.addDataSet(set);
return d;
//柱状
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
ArrayList<BarEntry> yVals2 = new ArrayList<BarEntry>();
/**
* 给每一条设置数据
*/
for (int i = 0; i < areaname.length; i++) {
yVals1.add(new BarEntry(i, (float) (Math.random() * 50)));
yVals2.add(new BarEntry(i, (float) (Math.random() * 50)));
}
BarDataSet set1, set2;
set1 = new BarDataSet(yVals1, "巡护区域");
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
set1.setColor(rgb("##3498db"));
set2 = new BarDataSet(yVals2, "护林员个数");
set2.setColor(rgb("#e74c3c"));
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
float groupSpace = 0.32f;
float barSpace = 0.04f; // x2 DataSet
float barWidth = 0.3f; // x2 DataSet
//这个计算公式是,(barwidh + barspace) * groupcount + groupspace
// (0.2 + 0.03) * 2 + 0.08 = 1.00 -> interval per "group"
BarData data = new BarData(set1, set2);
data.setBarWidth(barWidth);
data.groupBars(0f, groupSpace, barSpace);
return data;
阅读全文
0 0
- Android MpAndroidChart使用流程和坑--组合图
- Android MpAndroidchart使用流程和坑--柱状图
- Android MpAndroidchart使用流程和坑--饼状图
- MPAndroidChart 之 CombinedChart组合图简单使用
- Android之MPAndroidChart库使用说明(柱状图、折线图、饼图和组合图.)
- MPAndroidChart 图表柱状图,折线图,和组合图
- Android-MPAndroidChart使用总结
- 【Android】MPAndroidChart 使用记录
- MPAndroidChart项目实战(五)——MPAndroidChart组合图
- Android MPAndroidChart使用教程和源码分析(一)
- Android MPAndroidChart使用教程和源码分析(二)
- Android MPAndroidChart使用教程和源码分析(三)
- Android MPAndroidChart使用教程和源码分析(四)
- Android MPAndroidChart使用教程和源码分析(五)
- android柱状图和饼状图的简单使用(MPAndroidChart)
- Android使用MPAndroidChart绘制图表
- android使用mpandroidchart绘制图表
- Android中MPAndroidChart使用Demo
- 香蕉派 banana pi BPI-M2 Ultra 四核开源单板计算机,全志R40/allwinner V40芯片方案
- 阅读赵炯的《Linux内核完全注释》之前必须知道的!
- This view is not constrained vertically: at runtime it will jump to the left unless you add a vertic
- 新路程------imx6 换lvds屏幕出现黑块
- 基于深度学习的自然场景文字识别
- Android MpAndroidChart使用流程和坑--组合图
- GitHub的使用
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- android gpuimage显示的缩放和剪裁模式
- ThinkPHP5.0中Request请求对象的常用操作
- mysql 查询日志开启
- c#动态编译和执行代码
- Android7.1.1上下/左右分屏的策略分析
- selective search(RCNN使用的ROI提取方法)