mpandroidchart 对比直方图(柱状图)小例子

最近做了个软件,要画出数据统计图表,网上搜了下,MpAndroidChart很强大,什么曲线的,直方图,饼状图,雷达图都有,但是找了几个例子都是一条曲线的,自己研究了下,做了个可以对比的直方图。package com.example.textchart;
import android.R.color;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import java.util.ArrayList;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.LimitLine;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.components.XAxis.XAxisPosition;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.example.textchart.R;
import android.os.Bundle;
public class MainActivity extends Activity {
public BarChart barChart;
public ArrayList<BarEntry> entries = new ArrayList<BarEntry>(); //(x,y1)
public ArrayList<BarEntry> entries2 = new ArrayList<BarEntry>();//(x,y2)
public ArrayList<BarEntry> entries3= new ArrayList<BarEntry>();//(x,y3)
public BarDataSet dataset ,dataset2,dataset3;
private XAxis xAxis; //X坐标轴
private YAxis yAxis; //Y
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
barChart = (BarChart) findViewById(R.id.spread_line_chart);
xAxis = barChart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);//X轴在下边
yAxis = barChart.getAxisLeft();
xAxis.setDrawGridLines(false);//不要竖线网格
yAxis.setStartAtZero(false);//不一定从0坐标开始
barChart.getAxisRight().setEnabled(false); // 隐藏右边 的坐标轴
xAxis.setAvoidFirstLastClipping(false);
/*
* barChart.zoom(1.0f,1.0f,0f,0f); 开始时放大倍数(x轴,y轴,起点(x,y)),
(1.0f,1.0f,0f,0f)(0,0)点开始,放大1倍(原始大小),如果数据太多,不放大会很密集,
可以根据数据多少动态计算放大倍数,如下(最多显示5条,可滑动或缩放查看全部)
int n = (int) Math.ceil(MainActivity.measurements.size()/5.0);
if(n==0){
barChart.zoom(1.0f,1.0f,0f,0f);
}else{
barChart.zoom((float)n,1.0f,0f,0f);
}
*
*/
barChart.zoom(3.0f,1.0f,0f,0f);
initEntriesData(); //添加Y轴数据
show();
}
public void initEntriesData() {
entries.add(new BarEntry(4f, 0));
entries.add(new BarEntry(8f, 1));
entries.add(new BarEntry(6f, 2));
entries.add(new BarEntry(12f, 3));
entries.add(new BarEntry(18f, 4));
entries.add(new BarEntry(9f, 5));
entries.add(new BarEntry(4f, 6));
entries.add(new BarEntry(8f, 7));
entries.add(new BarEntry(6f, 8));
entries.add(new BarEntry(12f, 9));
entries.add(new BarEntry(18f, 10));
entries.add(new BarEntry(9f, 11));
entries2.add(new BarEntry(5f, 0));
entries2.add(new BarEntry(6f, 1));
entries2.add(new BarEntry(7f, 2));
entries2.add(new BarEntry(5f, 3));
entries2.add(new BarEntry(13f, 4));
entries2.add(new BarEntry(12f, 5));
entries2.add(new BarEntry(5f, 6));
entries2.add(new BarEntry(6f, 7));
entries2.add(new BarEntry(7f, 8));
entries2.add(new BarEntry(5f, 9));
entries2.add(new BarEntry(13f, 10));
entries2.add(new BarEntry(12f, 11));
entries3.add(new BarEntry(8f, 0));
entries3.add(new BarEntry(4f, 1));
entries3.add(new BarEntry(15f, 2));
entries3.add(new BarEntry(12f, 3));
entries3.add(new BarEntry(12f, 4));
entries3.add(new BarEntry(1f, 5));
entries3.add(new BarEntry(8f, 6));
entries3.add(new BarEntry(4f, 7));
entries3.add(new BarEntry(15f, 8));
entries3.add(new BarEntry(12f, 9));
entries3.add(new BarEntry(12f, 10));
entries3.add(new BarEntry(1f, 11));
}
public void show() {
dataset = new BarDataSet(entries, "甲");
dataset.setColor(Color.rgb(255, 48, 48));
dataset2 = new BarDataSet(entries2, "乙");
dataset2.setColor(Color.rgb(0, 191, 255));
dataset3 = new BarDataSet(entries3, "丙");
dataset3.setColor(Color.rgb(255, 215, 0));
ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>(); //坐标线的集合。
dataSets.add(dataset);
dataSets.add(dataset2);
dataSets.add(dataset3);
ArrayList<String> xVals = new ArrayList<String>(); //x轴坐标
for(int i = 1;i<13;i++){
xVals.add("第"+i+"次");
}
BarData data3 = new BarData(xVals, dataSets);
barChart.setData(data3);
barChart.animateY(2000);//动画效果 y轴方向,2秒
// chart.animateXY(5000,5000); //动画效果 xy轴方向,5秒
barChart.setDescription("某某某数据直方图");
}
}
...全文
相关推荐
mpandroidchart 对比直方图(柱状图)demo
mpandroidchart 对比直方图(柱状图)demo
MPAndroidChart之柱状图开发总结
1.隐藏网格线,保留水平线XAxis xAxis = mChart.getXAxis(); xAxis.setDrawAxisLine(true); xAxis.setDrawGridLines(false); mChart.getAxisLeft().setDrawAxisLine(false);2.设置显示每一个X轴的数值系统默认的是跳过一个值,比如1,2,3,4,5会显示为:1,3,5 设置
MPAndroidChart项目实战(一)——实现对比性柱状图
一丶简介 1.上上篇贴上的设计图 2.分析
MPAndroidChart的使用:水平柱状图
效果图如下: 水平柱状图与垂直柱状图的代码非常相似,将垂直柱状图中的x轴理解为水平柱状图中的y轴,将垂直柱状图中的y轴理解为水平柱状图的x轴就可以了。 垂直柱状图的文章如下: 柱状图 代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.c...
用MPAndroidChart实现可滑动的柱状图
用MPAndroidChart实现可滑动的柱状图 原理:MPAndroidChart并没有提供给滑动柱状图,但是视图是可以放大的,然后就能滑动了,so,嘿嘿嘿 详情,我的博客中会有的


