如何给图表设置数据
/*
设置数据
设置数据一共需要五个步骤
Step1: 设置 List*/
//使用BarEntry
List<BarEntry> barEntries = new ArrayList<>();
Integer[] ints = {23, 32, 45, 67, 89};
for (int i = 0; i < ints.length; i++) { //0-4
BarEntry barEntry = new BarEntry(i+1,ints[i]); //x,y
barEntries.add(barEntry);
}
//Step2: 将 List 的对象放在 BarDataSet 里, 树状图的颜色就是在这里设置
//BarDataSet
BarDataSet set1 = new BarDataSet(barEntries, "the weather");
//设置每个树状图的颜色,一共有两个方法setColors和setColor
set1.setColor(getResources().getColor(android.R.color.holo_orange_dark));
//Step3: 将 BarDataSet 的对象放在 List 里
//IBarDataSet
ArrayList<IBarDataSet> barDataSets = new ArrayList<>();
barDataSets.add(set1);
//BarData
//Step4: List 的数据放在 BarData 里
BarData barData = new BarData(barDataSets);
//设置树状图的宽度
barData.setBarWidth(0.5f);
//设置树状图上的字的字号
barData.setValueTextSize(10);
//Step5: 将 BarData 的数据放在 BarChart 上
barChart.setData(barData);
设置完数据之后,我们肯定还可以对图表进行一些简单的操作
barChart = (BarChart) findViewById(R.id.barchart);
//描述,默认在右下角
Description descirption = new Description();
descirption.setText("这是一坨翔");
descirption.setTextColor(Color.parseColor("#000000"));
descirption.setTextSize(19);
barChart.setDescription(descirption);
//设置是否可以拖拽
barChart.setDragEnabled(false);
//是否能够缩放
barChart.setScaleEnabled(false);
//是否允许x轴缩放
barChart.setScaleEnabled(false);
//设置显示的动画,BarChart的动画
//barChart.setAnimation();
//如果柱状超过设置的个数,则隐藏树状图上的值
barChart.setMaxVisibleValueCount(10);
//x轴的操作
//取到x轴的操作
XAxis xAxis = barChart.getXAxis();
//是否显示X轴的线(与X轴垂直的线),默认为true
xAxis.setDrawGridLines(false);
//设置XAxis坐标的字在哪里显示 XAxisPosition{ TOP, BOTTOM, BOTH_SIDED, TOP_INSIDE, BOTTOM_INSIDE}
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//设置X轴的值的间隔,具体不同看下面的图
xAxis.setGranularity(1f);
//设置X轴的值的个数
xAxis.setLabelCount(5);
//y轴的操作
//得到左侧Y轴的实例
YAxis leftYaxis = barChart.getAxisLeft();
//设置y轴的线(与y轴垂直的线的宽)
//leftYaxis.setGridLineWidth(Utils.convertDpToPixel(1));
leftYaxis.setGridLineWidth(0);
//设置Y轴的值的个数,默认为6个,最小为2个,最大为25个。第二个参数 如果启用,集标签数量将被强制,即标签的准确计数指定将绘制且分布均匀沿着轴 – 这可能导致标签有不均匀值
leftYaxis.setLabelCount(5, false);
//设置Y轴的起点值
//leftYaxis.setAxisMinValue(0f);
//设置将在全范围的百分比顶轴的空间。默认10F.设置在图表上最高处的值相比轴上最高值的顶端空间(总轴范围的百分比)最大值和最高值的百分比 设置为100,则最高值为最大值的1倍
//leftYaxis.setSpaceTop(15f);
/*
设置数据
设置数据一共需要五个步骤
Step1: 设置 List*/
//使用BarEntry
List<BarEntry> barEntries = new ArrayList<>();
Integer[] ints = {23, 32, 45, 67, 89};
for (int i = 0; i < ints.length; i++) { //0-4
BarEntry barEntry = new BarEntry(i+1,ints[i]);
barEntries.add(barEntry);
}
//Step2: 将 List 的对象放在 BarDataSet 里, 树状图的颜色就是在这里设置的
BarDataSet set1 = new BarDataSet(barEntries, "the weather");
//设置每个树状图的颜色,一共有两个方法setColors和setColor
set1.setColor(getResources().getColor(android.R.color.holo_orange_dark));
//Step3: 将 BarDataSet 的对象放在 List 里
ArrayList<IBarDataSet> barDataSets = new ArrayList<>();
barDataSets.add(set1);
//Step4: List 的数据放在 BarData 里
BarData barData = new BarData(barDataSets);
//设置树状图的宽度
barData.setBarWidth(0.5f);
//设置树状图上的字的字号
barData.setValueTextSize(10);
//Step5: 将 BarData 的数据放在 BarChart 上
barChart.setData(barData);
设置多条柱状图的格式,但是这里的值要换一下,毕竟同样的值会被掩盖
//三个柱状
entries1.add(new BarEntry(1f, 0));
entries1.add(new BarEntry(2f, 1));
entries1.add(new BarEntry(3f, 2));
entries1.add(new BarEntry(4f, 3));
entries1.add(new BarEntry(5f, 4));
entries1.add(new BarEntry(6f, 5));
entries1.add(new BarEntry(7f, 6));
entries1.add(new BarEntry(8f, 7));
entries1.add(new BarEntry(9f, 8));
entries1.add(new BarEntry(10f, 9));
entries1.add(new BarEntry(11f, 10));
entries1.add(new BarEntry(12f, 11));
entries2.add(new BarEntry(1f, 0));
entries2.add(new BarEntry(2f, 1));
entries2.add(new BarEntry(3f, 2));
entries2.add(new BarEntry(4f, 3));
entries2.add(new BarEntry(5f, 4));
entries2.add(new BarEntry(6f, 5));
entries2.add(new BarEntry(7f, 6));
entries2.add(new BarEntry(8f, 7));
entries2.add(new BarEntry(9f, 8));
entries2.add(new BarEntry(10f, 9));
entries2.add(new BarEntry(11f, 10));
entries2.add(new BarEntry(12f, 11));
entries3.add(new BarEntry(1f, 0));
entries3.add(new BarEntry(2f, 1));
entries3.add(new BarEntry(3f, 2));
entries3.add(new BarEntry(4f, 3));
entries3.add(new BarEntry(5f, 4));
entries3.add(new BarEntry(6f, 5));
entries3.add(new BarEntry(7f, 6));
entries3.add(new BarEntry(8f, 7));
entries3.add(new BarEntry(9f, 8));
entries3.add(new BarEntry(10f, 9));
entries3.add(new BarEntry(11f, 10));
entries3.add(new BarEntry(12f, 11));
//设置显示图形和文字,并且设置颜色
dataset = new BarDataSet(entries1, "甲");
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<IBarDataSet> ibarDataSet = new ArrayList<>();
ibarDataSet.add(dataset);
ibarDataSet.add(dataset2);
ibarDataSet.add(dataset3);
BarData data3 = new BarData(ibarDataSet);
barChart.setData(data3);
barChart.animateY(2000);//动画效果 y轴方向,2秒
//下面再来一个设置数据的小例子
barChart = (BarChart) findViewById(R.id.barchart);
//处理数据
//1这些事数据,使用BarEntry
ArrayList<BarEntry> barEntries = new ArrayList<>();
barEntries.add(new BarEntry(1,10));
barEntries.add(new BarEntry(2,20));
barEntries.add(new BarEntry(3,30));
//2对这些数据的设置
BarDataSet barDataSet = new BarDataSet(barEntries,"这些数据的描述");
//3通过这个集合,可以设置多组数据
ArrayList<IBarDataSet> iBarDataSets = new ArrayList<>();
iBarDataSets.add(barDataSet);
//4给多组数据进行一些设置
BarData barData = new BarData(iBarDataSets);
barData.setBarWidth(0.5f);
barData.setValueTextColor(Color.BLACK);
//设置数据
barChart.setData(barData);
最后一个列子
参考博客http://blog.csdn.net/github_33304260/article/details/51272078
package com.ityingli.www.mpandroidcharbarchat;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.components.Description;
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.interfaces.datasets.IBarDataSet;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private BarChart barChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
barChart = (BarChart) findViewById(R.id.barchart);
//这里使用两个方法,一个控制数据,一个控制视图
BarData barData = setInitData();
//设置图表的属性
setBarData(barData);
}
private void setBarData(BarData barData) {
barChart.setData(barData);
barChart.setDrawBorders(true); //设置图标是否要边框,当然也可以设置边框的颜色大少等、
Description description = new Description();
description.setText("");
barChart.setDescription(description); //设置不要描述
barChart.setDrawGridBackground(true); //是否显示表格颜色
barChart.setGridBackgroundColor(Color.RED); //设置红色
barChart.setTouchEnabled(false); // 设置是否可以触摸
barChart.setDragEnabled(false);// 是否可以拖拽
barChart.setScaleEnabled(false);// 是否可以缩放
barChart.setPinchZoom(false);//y轴的值是否跟随图表变换缩放;如果禁止,y轴的值会跟随图表变换缩放
// barChart.setBackgroundColor(Color.BLACK);// 设置整个图表控件的背景
// barChart.setDrawBarShadow(true);//柱状图没有数据的部分是否显示阴影效果
// barChart.setDrawValueAboveBar(false);//柱状图上面的数值是否在柱子上面
//是否显示竖直标尺线
barChart.getXAxis().setDrawGridLines(false);
//设置横坐标之间的间隔距离 float值
// barChart.getXAxis().setSpaceMax(50);
//右侧是否显示Y轴数值
barChart.getAxisRight().setDrawLabels(false);
//是否显示最右侧竖线
barChart.getAxisRight().setEnabled(false);
}
//初始化数据
private BarData setInitData() {
ArrayList<String> xValues = new ArrayList<>();
for(int i =0 ;i<24;i++){
xValues.add(i+"");
}
ArrayList<BarEntry> barentryS = new ArrayList<>();
for(int i = 0 ; i<24;i++){
barentryS.add(new BarEntry(i,(float)(Math.random()*10)+3));
}
BarDataSet barDataSet = new BarDataSet(barentryS,"测试数据");
ArrayList<IBarDataSet> iBarDataSet = new ArrayList<>();
iBarDataSet.add(barDataSet);
BarData barData = new BarData(iBarDataSet);
//barChart.setData(barData);
return barData;
}
}