您的位置:首页 > 移动开发 > Android开发

MPAndroidChart图形框架(详细使用基本API)

2017-03-01 20:41 495 查看
**

一.概述(引入项目)

**

支持的图形

1. Line Chart

折线图

2. Bar Chart

直方图

3. Pie Chart

饼图

4. Bubble Chart

气泡图

5. Candle Stick Chart

蜡烛图(用于展示金融数据时常称为K线图)

6. Radar Chart

雷达图

7. Cubic Line Chart

立方折线图

8. Stacked Bar Chart

堆积图

9. Combined-Charts (line-, bar-, scatter-, candle-data)

组合图(折线图/条形图/散点图/蜡烛图)

github:https://github.com/PhilJay/ (建议使用2.2.4版本)

repositories {
maven { url "https://jitpack.io" }
}

dependencies {
compile 'com.github.PhilJay:MPAndroidChart:v2.2.4'
}


使用:

<com.github.mikephil.charting.charts.LineChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />


LineChart chart = (LineChart) findViewById(R.id.chart);


invalidate() : 在chart中调用会使其刷新重绘

notifyDataSetChanged() : 让chart知道它依赖的基础数据已经改变,并执行所有必要的重新计算(比如偏移量,legend,最大值,最小值 …)。在动态添加数据时需要用到。

setLogEnabled(boolean enabled) : 设置为true将激活chart的logcat输出。但这不利于性能,如果不是必要的,应保持禁用。

note:直接用控件去设置表格的颜色描述文字等

setDescription(String desc) : 设置图表的描述文字,会显示在图表的右下角。

setDescriptionColor(int color) : 设置描述文字的颜色。

setDescriptionPosition(float x, float y) : 自定义描述文字在屏幕上的位置(单位是像素)。

setDescriptionTypeface(Typeface t) : 设置描述文字的 Typeface。

setDescriptionTextSize(float size) : 设置以像素为单位的描述文字,最小6f,最大16f。

setNoDataText(“正在加载…”);//加载数据时显示的

setNoDataTextDescription(“没有网络”); //加载数据失败时显-示的

setDrawBorders(boolean enabled) : 启用/禁用绘制图表边框(chart周围的线)。

setBorderColor(int color) : 设置 chart 边框线的颜色。

setBorderWidth(float width) : 设置 chart 边界线的宽度,单位 dp。

note:直接用控件去设置图表的触摸事件

setTouchEnabled(boolean enabled) : 启用/禁用与图表的所有可能的触摸交互。

setDragEnabled(boolean enabled) : 启用/禁用拖动(平移)图表。

setScaleEnabled(boolean enabled) : 启用/禁用缩放图表上的两个轴。

setScaleXEnabled(boolean enabled) : 启用/禁用缩放在x轴上。

setScaleYEnabled(boolean enabled) : 启用/禁用缩放在y轴。

setPinchZoom(boolean enabled) : 如果设置为true,捏缩放功能。 如果false,x轴和y轴可分别放大。

setDoubleTapToZoomEnabled(boolean enabled) : 设置为false以禁止通过在其上双击缩放图表。

setHighlightPerDragEnabled(boolean enabled) : 设置为true,允许每个图表表面拖过,当它完全缩小突出。 默认值:true

setHighlightPerTapEnabled(boolean enabled) : 设置为false,以防止值由敲击姿态被突出显示。 值仍然可以通过拖动或编程方式突出显示。 默认值:true

//抛动

setDragDecelerationEnabled(boolean enabled) : 如果设置为true,手指滑动抛掷图表后继续减速滚动。 默认值:true。

setDragDecelerationFrictionCoef(float coef) : 减速的摩擦系数在[0; 1]区间,数值越高表示速度会缓慢下降,例如,如果将其设置为0,将立即停

//高亮

highlightValues(Highlight[] highs) : 高亮显示值,高亮显示的点击的位置在数据集中的值。 设置null或空数组则撤消所有高亮。

highlightValue(int xIndex, int dataSetIndex) : 高亮给定xIndex在数据集的值。 设置xIndex或dataSetIndex为-1撤消所有高亮。

getHighlighted() : 返回一个 Highlight[] 其中包含所有高亮对象的信息,xIndex和dataSetIndex。

chart.setOnChartValueSelectedListener(this); //高亮监听

**

二.坐标轴,图标(Logo)

**

/* 设置图表的X轴样式 */

//X
XAxis xAxis = linchart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.TOP);//X轴上字体的位置,TOP(图表上面),BOTTOM(图表下面),BOTH_SIDED(上下都有),BOTTOM_INSIDE(图表下面的里面一点)
xAxis.setDrawGridLines(true);
xAxis.setGridColor(Color.parseColor("#2B2B2B"));    //X轴的线条颜色
xAxis.setTextColor(Color.parseColor("#2B2B2B"));    //X轴上的字体颜色
xAxis.setSpaceBetweenLabels(12);    //轴刻度间的宽度,默认值是4
xAxis.setEnabled(true);          //决定显不显示图标
/**
* 图表左边y轴样式(y轴可以设置两个)
* */
YAxis leftAxis = linchart.getAxisLeft();
leftAxis.setLabelCount(10, false);  //设置左边Y轴上数字的个数,不设置则均匀分配
leftAxis.setEnabled(true);  //是否显示左边的Y轴
/**
* 图表右边y轴样式
* */
YAxis rightAxis = linchart.getAxisRight();
rightAxis.setEnabled(false);
xAxis.setDrawGridLines(true); //绘制竖线(必须那条轴的数据时显示的)


//数据颜色

setDrawValues(boolean enabled) : 启用/禁用 绘制所有 DataSets 数据对象包含的数据的值文本。

setValueTextColor(int color) : 设置 DataSets 数据对象包含的数据的值文本的颜色。

setValueTextSize(float size) : 设置 DataSets 数据对象包含的数据的值文本的大小(单位是dp)。

dataSet.setDrawValues(true); // 是否在点上绘制Value

//图标

Legend legend = chart.getLegend();获取图表操作

setEnabled(boolean enabled) : 设置Legend启用或禁用。 如果禁用, Legend 将不会被绘制。

setMaxSizePercent(float maxSize) : 设置最大图例的百分比(相对整个图表大小)。 默认值:0.95f(95%)

setPosition(LegendPosition pos) : 通过 LegendPosition 设置 Legend 出现的位置。

setTextColor(int color) : 设置图例标签的颜色。

setTextSize(float size) : 设置在DP传说标签的文字大小。



代码:

/**
* 设置图标
* */
Legend l = bc.getLegend();  // 设置比例图标示
l.setForm(Legend.LegendForm.SQUARE);// SQUARE方块图标,CIRCLE圆形图标,LINE横线图标
l.setFormSize(6f);// 字号
l.setTextColor(Color.parseColor("#2B2B2B"));// 字体颜色

List<String> labels = new ArrayList<>(); //图标旁边的文字说明
labels.add("红涨");
labels.add("绿跌");

List<Integer> colors = new ArrayList<>();//图标的颜色
colors.add(Color.RED);
colors.add(Color.GREEN);

l.setExtra(colors, labels);        //设置标注的颜色及内容,设置的效果如下图

//  l.setEnabled(true);          //决定显不显示图标


**

三.动态添加数据

**

http://blog.csdn.net/u014136472/article/details/50383454

**

四.缩放视窗

**

zoomIn() : Zooms in by 1.4f, into the charts center.

zoomOut() : Zooms out by 0.7f, from the charts center.

zoom(float scaleX, float scaleY, float x, float y) : 根据所给的参数进行放大或缩小。 参数 x 和 y 是变焦中心的坐标(单位:像素)。 记住,1f = 无放缩 。

**

五.动画

**

// 设置动画

chart.animateX(8000); // 图1

chart.animateY(8000); // 图2

chart.animateXY(8000, 8000); // 图3

chart.animateY(8000, Easing.EasingOption.EaseInElastic ); // 图4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: