折线图
@Override
protected void initData() {
mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
//设置当前折线图的描述
lineChart.setDescription("LOL进入世界总决赛");
//是否绘制网格布局
lineChart.setDrawGridBackground(false);
//获取X轴
XAxis xAxis = lineChart.getXAxis();
//显示x轴显示的位置
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
//显示x轴的字体
xAxis.setTypeface(mTf);
//是否绘制x轴网格线
xAxis.setDrawGridLines(false);
//是否绘制x轴的轴线
xAxis.setDrawAxisLine(true);
//获取左边Y轴对象
YAxis leftAxis = lineChart.getAxisLeft();
//显示y轴的字体
leftAxis.setTypeface(mTf);
//参数1:左边y轴提供的区间的个数 参数2:是否均匀分布这几个区间,false代表均匀分布
leftAxis.setLabelCount(5, false);
//获取右边Y轴坐标
YAxis rightAxis = lineChart.getAxisRight();
//设置右边Y轴的字体
rightAxis.setTypeface(mTf);
rightAxis.setLabelCount(5, false);
//将右边Y轴设置为不显示的
rightAxis.setDrawGridLines(false);
// 提供折线数据(通常情况下,数据来自于服务器)
lineChart.setData(generateDataLine(1));
//设置动画和时间
lineChart.animateX(750);
}
private LineData generateDataLine(int cnt) {
ArrayList<Entry> e1 = new ArrayList<Entry>();
for (int i = 0; i < 12; i++) {
e1.add(new Entry((int) (Math.random() * 65) + 40, i));
}
LineDataSet d1 = new LineDataSet(e1, "New DataSet " + cnt + ", (1)");
//设置折线的宽度
d1.setLineWidth(2.5f);
//设置小圆圈的宽度
d1.setCircleSize(4.5f);
//设置高亮的颜色
d1.setHighLightColor(Color.rgb(244, 117, 117));
//是否显示小圆圈对应的数据
d1.setDrawValues(false);
//折线1
ArrayList<Entry> e2 = new ArrayList<Entry>();
for (int i = 0; i < 12; i++) {
e2.add(new Entry(e1.get(i).getVal() - 30, i));
}
//折线2
LineDataSet d2 = new LineDataSet(e2, "New DataSet " + cnt + ", (2)");
d2.setLineWidth(2.5f);
d2.setCircleSize(4.5f);
d2.setHighLightColor(Color.rgb(244, 117, 117));
d2.setColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setCircleColor(ColorTemplate.VORDIPLOM_COLORS[0]);
d2.setDrawValues(false);
ArrayList<LineDataSet> sets = new ArrayList<LineDataSet>();
sets.add(d1);
sets.add(d2);
LineData cd = new LineData(getMonths(), sets);
return cd;
}
private ArrayList<String> getMonths() {
ArrayList<String> m = new ArrayList<String>();
m.add("Jan");
m.add("Feb");
m.add("Mar");
m.add("Apr");
m.add("May");
m.add("Jun");
m.add("Jul");
m.add("Aug");
m.add("Sep");
m.add("Okt");
m.add("Nov");
m.add("Dec");
return m;
}
![](https://img-blog.csdn.net/20171230122139778?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjQ2NzU0Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
柱状图
@Override
protected void initData() {
mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
barChart.setDescription("华为手机的销售额");
barChart.setDrawGridBackground(false);
//是否绘制柱状图的背景
barChart.setDrawBarShadow(false);
XAxis xAxis =barChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setTypeface(mTf);
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(true);
YAxis leftAxis =barChart.getAxisLeft();
leftAxis.setTypeface(mTf);
leftAxis.setLabelCount(5, false);
//设置最大值距离顶部的距离
leftAxis.setSpaceTop(20f);
YAxis rightAxis =barChart.getAxisRight();
rightAxis.setTypeface(mTf);
rightAxis.setLabelCount(5, false);
rightAxis.setSpaceTop(20f);
BarData barData = generateDataBar(1);
barData.setValueTypeface(mTf);
// set data
barChart.setData( barData);
// 设置Y轴对象动画
barChart.animateY(700);
}
private BarData generateDataBar(int cnt) {
ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
for (int i = 0; i < 12; i++) {
entries.add(new BarEntry((int) (Math.random() * 70) + 30, i));
}
BarDataSet d = new BarDataSet(entries, "New DataSet " + cnt);
//设置相邻的柱状图之间的距离
d.setBarSpacePercent(20f);
d.setColors(ColorTemplate.VORDIPLOM_COLORS);
//设置高亮的透明度
d.setHighLightAlpha(255);
BarData cd = new BarData(getMonths(), d);
return cd;
}
private ArrayList<String> getMonths() {
ArrayList<String> m = new ArrayList<String>();
m.add("Jan");
m.add("Feb");
m.add("Mar");
m.add("Apr");
m.add("May");
m.add("Jun");
m.add("Jul");
m.add("Aug");
m.add("Sep");
m.add("Okt");
m.add("Nov");
m.add("Dec");
return m;
}
![](https://img-blog.csdn.net/20171230122158651?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjQ2NzU0Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
饼图
@Override
protected void initData() {
//字体库
mTf = Typeface.createFromAsset(getAssets(), "OpenSans-Regular.ttf");
pieChart.setDescription("Android厂商2017年手机占有率");
//最内层圆的半径
pieChart.setHoleRadius(52f);
//包裹内层圆的半径
pieChart.setTransparentCircleRadius(57f);
//设置中央字体
pieChart.setCenterText("Android\n厂商占比");
pieChart.setCenterTextTypeface(mTf);
pieChart.setCenterTextSize(18f);
//是否显示百分比,true:各部分的百分比和是100%
pieChart.setUsePercentValues(true);
PieData pieData = generateDataPie(1);
//设置样式为百分比
pieData.setValueFormatter(new PercentFormatter());
pieData.setValueTypeface(mTf);
pieData.setValueTextSize(11f);
pieData.setValueTextColor(Color.RED);
pieChart.setData(pieData);
//获取右上角描述结构的对象
Legend l = pieChart.getLegend();
l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
l.setYEntrySpace(0f);//相邻的entry在y轴上的间距
l.setYOffset(30f);//设置第一个entry距离顶部的距离
pieChart.animateXY(900, 900);
}
private PieData generateDataPie(int cnt) {
ArrayList<Entry> entries = new ArrayList<Entry>();
for (int i = 0; i < 4; i++) {
entries.add(new Entry((int) (Math.random() * 70) + 30, i));
}
PieDataSet d = new PieDataSet(entries, "");
//相邻模块的间距
d.setSliceSpace(2f);
d.setColors(ColorTemplate.VORDIPLOM_COLORS);
PieData cd = new PieData(getQuarters(), d);
return cd;
}
private ArrayList<String> getQuarters() {
ArrayList<String> q = new ArrayList<String>();
q.add("三星");
q.add("华为");
q.add("vivo");
q.add("OPPO");
return q;
}