日常入门代码,欢迎品评。
折线图 LineChart
先看图:
代码部分:
private void initLineChart(){
Description description = new Description();
description.setText("give a mark");
description.setTextSize(16);
lineChart.setDescription(description);
String[] xData = {"1", "2", "3", "4", "5"};//预设的x轴的数据
String[] yData = {"80", "85", "80","90", "95"};//预设的y轴的数据
LineData lineData = getData(xData, yData);
lineChart.setData(lineData);
lineChart.setAutoScaleMinMaxEnabled(false);
lineChart.setBorderWidth(1f);//设置边框的宽度(粗细)
lineChart.setDrawBorders(true);//显示图形的边框(边界)
lineChart.setDragXEnabled(true);//在放大的情况下,能否拖动x轴
lineChart.setDragYEnabled(true);
lineChart.setTouchEnabled(true);//设置为false的话,界面就像是一个图片
lineChart.setBackgroundColor(Color.parseColor("#d1d1d1"));
lineChart.setDrawMarkers(true);//设置是否显示
lineChart.setMarker(new IMarker() {//设置imarker可以设置点击数据的时候出现的图形。
@Override
public MPPointF getOffset() {
return null;
}
@Override
public MPPointF getOffsetForDrawingAtPoint(float posX, float posY) {
return null;
}
@Override
public void refreshContent(Entry e, Highlight highlight) {
}
@Override
public void draw(Canvas canvas, float posX, float posY) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.GREEN);
paint.setTextSize(22f);
canvas.drawText("here", posX, posY, paint);
}
});
lineChart.animateX(500);
}
private LineData getData(String[] xd, String[] yd){
//节点
ArrayList<Entry> nodeData = new ArrayList<>();
for (int i = 0; i < xd.length; i ++){
nodeData.add(new Entry(Float.parseFloat(xd[i]), Float.parseFloat(yd[i])));
}
LineDataSet lineDataSet = new LineDataSet(nodeData, "Score for fisrt five time");
lineDataSet.setDrawFilled(true);//就是折线图下面是否有阴影填充,这样看起来就像是起伏的山脉
lineDataSet.setFillColor(Color.GREEN);
lineDataSet.setDrawCircles(true);//数据是否用圆圈显示
lineDataSet.setCircleColor(Color.BLACK);//显示数据的圆的颜色
lineDataSet.setCircleRadius(4f);//显示数据的圆的半径
lineDataSet.setCircleColors(Color.BLACK, Color.GRAY, Color.BLUE, Color.GREEN, Color.RED);//显示的几个数据的园的颜色
lineDataSet.setDrawCircleHole(true);//数据是否用环形圆圈(同心圆)显示
lineDataSet.setCircleHoleColor(Color.YELLOW);//同心圆内圆的颜色,即圆孔的颜色
lineDataSet.setCircleHoleRadius(2f);//内圆的半径
lineDataSet.setColor(Color.GRAY);//折线的颜色,以及label前面图形的颜色
lineDataSet.setValueTextSize(10f);//数据的字体大小
lineDataSet.setHighlightEnabled(true);//设置是否显示十字架的凸显样式
lineDataSet.setHighLightColor(Color.BLACK);//设置图形样式的颜色
lineDataSet.setDrawHorizontalHighlightIndicator(false);//设置凸显样式水平图形显隐
lineDataSet.setDrawVerticalHighlightIndicator(true);//设置凸显样式垂直图形显隐
lineDataSet.setHighlightLineWidth(1f);//点击数据会出现十字架形状的定位显示,设置该十字架的宽度
lineDataSet.setLineWidth(2f);//设置折线的宽度
lineDataSet.setFormSize(10f);//label前面的图形的大小
lineDataSet.setForm(Legend.LegendForm.CIRCLE);//设置图例的图形的形状
lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);//设置折线的形状:直线、梯形、贝塞尔曲线
lineDataSet.setCubicIntensity(0.5f);//修改CUBIC_BEZIER模式下面的曲线的一个参数,会让曲线变的很奇怪
return new LineData(lineDataSet);
}
饼状图: PieChart
先看图:
代码部分:
private void initPieChart(){
pieChart.setUsePercentValues(false);//这货,是否使用百分比显示,但是我还是没操作出来。
Description description = pieChart.getDescription();
description.setText("Assets View"); //设置描述的文字
pieChart.setHighlightPerTapEnabled(true); //设置piecahrt图表点击Item高亮是否可用
pieChart.animateX(2000);
initPieChartData();
pieChart.setDrawEntryLabels(true); // 设置entry中的描述label是否画进饼状图中
pieChart.setEntryLabelColor(Color.GRAY);//设置该文字是的颜色
pieChart.setEntryLabelTextSize(10f);//设置该文字的字体大小
pieChart.setDrawHoleEnabled(true);//设置圆孔的显隐,也就是内圆
pieChart.setHoleRadius(28f);//设置内圆的半径。外圆的半径好像是不能设置的,改变控件的宽度和高度,半径会自适应。
pieChart.setHoleColor(Color.WHITE);//设置内圆的颜色
pieChart.setDrawCenterText(true);//设置是否显示文字
pieChart.setCenterText("Test");//设置饼状图中心的文字
pieChart.setCenterTextSize(10f);//设置文字的消息
pieChart.setCenterTextColor(Color.RED);//设置文字的颜色
pieChart.setTransparentCircleRadius(31f);//设置内圆和外圆的一个交叉园的半径,这样会凸显内外部的空间
pieChart.setTransparentCircleColor(Color.BLACK);//设置透明圆的颜色
pieChart.setTransparentCircleAlpha(50);//设置透明圆你的透明度
Legend legend = pieChart.getLegend();//图例
legend.setEnabled(true);//是否显示
legend.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);//对齐
legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);//对齐
legend.setForm(Legend.LegendForm.DEFAULT);//设置图例的图形样式,默认为圆形
legend.setOrientation(Legend.LegendOrientation.VERTICAL);//设置图例的排列走向:vertacal相当于分行
legend.setFormSize(6f);//设置图例的大小
legend.setTextSize(8f);//设置图注的字体大小
legend.setFormToTextSpace(4f);//设置图例到图注的距离
legend.setDrawInside(true);//不是很清楚
legend.setWordWrapEnabled(false);//设置图列换行(注意使用影响性能,仅适用legend位于图表下面),我也不知道怎么用的
legend.setTextColor(Color.BLACK);
}
private void initPieChartData(){
ArrayList<PieEntry> pieEntries = new ArrayList<>();
pieEntries.add(new PieEntry(70f, "cash banlance : 1500"));
pieEntries.add(new PieEntry(30f, "consumption banlance : 500"));
pieEntries.add(new PieEntry(30f, "else : 500"));
PieDataSet pieDataSet = new PieDataSet(pieEntries, null);
pieDataSet.setColors(Color.parseColor("#f17548"), Color.parseColor("#FF9933"), Color.YELLOW);
pieDataSet.setSliceSpace(3f);//设置每块饼之间的空隙
pieDataSet.setSelectionShift(10f);//点击某个饼时拉长的宽度
PieData pieData = new PieData(pieDataSet);
pieData.setDrawValues(true);
pieData.setValueTextSize(12f);
pieData.setValueTextColor(Color.BLUE);
pieChart.setData(pieData);
pieChart.invalidate();
}