介绍
在APP开发中遇到图表的样式,一般我们要先查询GitHub上比较火的开源框架,这种图标应用广泛,统计、游戏统计、人际关系图等等,用到今天的这个框架MPAndroidChart 点击查看GitHub
一个可以拖动缩放的图表库,包含曲线图、直方图、饼状图,其中直方图支持3d效果。
核心功能:
8种不同的图表类型
在两个轴上缩放(使用触摸手势,单独轴或捏缩放)
拖动/平移(使用触摸手势)
组合图(线,条,散射,蜡烛数据)
双(单独)轴
可定制轴(x轴和y轴)
突出显示值(具有可自定义的弹出式视图)
将图表保存到SD卡(作为图像或.txt文件)
预定义颜色模板
图例(自动生成,可自定义)
动画(在xPx和yPx轴上建立动画)
限制线(提供附加信息,最大值…)
完全可定制(油漆,字体,图例,颜色,背景,手势,虚线,…)
在Line和BarChart中可以平滑地缩放和滚动多达30.000个数据点
Gradle支持
直接从数据作图Realm.io移动数据库:MPAndroidChart-境界 ⚡️
1.入门
依赖
为了使用库,有4个不同的选项:
下面添加到项目层面build.gradle:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
或者
dependencies {
compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
或者
添加以下到您的部分pom.xml:
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
或者
添加以下到您的部分pom.xml:
<dependency>
<groupId>com.github.PhilJay</groupId>
<artifactId>MPAndroidChart</artifactId>
<version>v3.0.1</version>
</dependency>
视图分类
LineChart (线性图表)
Combined-Chart (组合图表)
BarChart (条形图表)
Horizontal-BarChart(水平条形图表)
PieChart(圆形图表)
ScatterChart(分散式图表)
CandleStickChart(烛台图表)
BubbleChart (气泡图表)
RadarChart(雷达图表)
创建视图
在.xml中定义它:
<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);
代码实现
LineChart chart = new LineChart(Context);
RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativeLayout);
rl.add(chart); // add the programmatically created chart
添加数据
在拥有图表实例后,可以创建数据并将其添加到图表中。此示例使用LineChart,其中Entry类在图表中用x和y坐标表示单个条目。其他图表类型,如BarChart使用其他类(例如BarEntry)为此目的。
YourData[] dataObjects = ...;
List<Entry> entries = new ArrayList<Entry>();
for (YourData data : dataObjects) {
entries.add(new Entry(data.getValueX(), data.getValueY()));
}
然后,需要将List创建的LineDataSet对象添加到。DataSet对象保存属于一起的数据,并允许该数据的单独样式。下面使用的“标签”只有一个描述性的目的,并显示在Legend,如果启用。
LineDataSet dataSet = new LineDataSet(entries, "Label"); // add entries to dataset
dataSet.setColor(...);
dataSet.setValueTextColor(...); // styling, ...
最后,需要将LineDataSet创建的一个或多个对象添加到LineData对象。此对象包含由Chart实例表示的所有数据,并允许进一步的样式。创建数据对象后,可以将其设置为图表并刷新:
LineData lineData = new LineData(dataSet);
chart.setData(lineData);
chart.invalidate(); // refresh
各种图表数据设置
LineChart
如果要向图表添加值(数据),则必须通过
public void setData(ChartData data) { ... }
方法。该基类ChartData(ChartData)类封装在渲染过程中所需图表的所有数据和信息。对于每个类型的图表,不同的亚类ChartData(如LineData)存在应该用于该图表设定数据。在构造函数中,你可以交出一个List
/ * *列表构造* /
public LineData(List<ILineDataSet> sets) { ... }
/ * *构造与一个或多个对象ILineDataSet * /
public LineData(ILineDataSet...) { ... }
那么,什么是一个DataSet和你为什么需要它?这实际上很简单。一个DataSet对象代表一组条目&