<p>最近在学安卓开发,需要在Activity中显示一个折线图,Achartengine是一款很好的制图工具,可以用来绘制折线图,柱状图、圆饼图等。原理很简单。经过两天的摸索算是基本掌握了一些使用方法,现把自己的心得总结一下。小弟初次写博客,写的不好的话,请各位批评指正。</p><p>先上效果图吧</p><p><img src="http://img.blog.csdn.net/20150103154002775?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpbmcx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>代码如下</p><div> </div>
import org.achartengine.ChartFactory; import org.achartengine.chart.PointStyle; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.graphics.Paint.Align; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_main); double x [] = {1,2,3,4,5,6,7}; double y [] = {3.9,8.4,7.8,4.1,8.7,6.1,3.8}; // XYMultipleSeriesRenderer构造显示渲染用途 //XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式 XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); renderer.setChartTitle("血糖变化趋势图"); //设置图表的X轴的当前方向 renderer.setOrientation(XYMultipleSeriesRenderer.Orientation.HORIZONTAL); renderer.setXAxisMin(0); renderer.setXAxisMax(7); renderer.setYAxisMin(2); renderer.setYAxisMax(16); renderer.setXTitle("最近7次测量值");//设置为X轴的标题 renderer.setYTitle("血糖水平");//设置y轴的标题 renderer.setXLabels(8);//设置x轴显示12个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setYLabels(15);//设置y轴显示15个点,根据setChartSettings的最大值和最小值自动计算点的间隔 renderer.setShowGrid(true);//是否显示网格 renderer.setXLabelsAlign(Align.CENTER);//刻度线与刻度标注之间的相对位置关系 renderer.setLabelsTextSize(15);//设置标签的文字大小(坐标轴值得大小) renderer.setYLabelsAlign(Align.RIGHT);//刻度线与刻度标注之间的相对位置关系 renderer.setApplyBackgroundColor(true); renderer.setMarginsColor(this.getResources().getColor(R.color.back)); //XYSeriesRenderer 对点的绘制进行设置 XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(Color.BLUE); r.setPointStyle(PointStyle.CIRCLE);//设置点的样式 r.setFillPoints(true);//填充点(显示的点是空心还是实心) r.setDisplayChartValues(true);//将点的值显示出来 r.setChartValuesTextAlign(Align.RIGHT); r.setChartValuesSpacing(10);//显示的点的值与图的距离 r.setChartValuesTextSize(15);//点的值的文字大小 r.setDisplayChartValuesDistance(30); //表格加载数据样式 renderer.addSeriesRenderer(r); //XYMultipleSeriesDataset进行显示数据XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); XYSeries series = new XYSeries("全天血糖变化"); for(int i=0;i<x.length;i++){ series.add(x[i], y[i]); } // 将数据加入图表,将需要绘制的点放入dataset中 dataset.addSeries(series); View chart = ChartFactory.getLineChartView(this, dataset, renderer); chart.setBackgroundColor(this.getResources().getColor(R.color.back)); this.setContentView(chart); } }
总结如下:1、需要在工程目录下libs文件夹下添加achartengine-1.1.0.jar 文件以及在配置文件中添加 <activity android:name="org.achartengine.GraphicalActivity" />语句。
可以到官网下载需要的jar文件。http://code.google.com/p/achartengine/downloads/list
2、achartengine几个重要方法,掌握这几个方法就可以清除整个折线图的设计架构了。
2.1
// XYMultipleSeriesRenderer构造显示渲染用途 //XYMultipleSeriesRenderer类型的对象,用于提供图表展现时的一些样式 XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
用来显示底层的表格
2.2 //XYSeriesRenderer 对点的绘制进行设置 XYSeriesRenderer r = new XYSeriesRenderer();
这个用来设置在表上数据的显示形式,
2.3<pre name="code" class="java"> 2.3//表格加载数据样式 renderer.addSeriesRenderer(r);这句话很重要,是将二者融为一体的方法。
2.4<pre name="code" class="java"> //XYMultipleSeriesDataset进行显示数据XYMultipleSeriesDataset类型的对象,用于提供图表需要表示的数据集 XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
这句话是用来往折线图上加载数据的,通常是for循环来实现。
2.5<pre name="code" class="java"> XYSeries series = new XYSeries("全天血糖变化"); for(int i=0;i<x.length;i++){ series.add(x[i], y[i]); }
这段代码就是载入xy的数据
2.6<pre name="code" class="java"> // 将数据加入图表,将需要绘制的点放入dataset中 dataset.addSeries(series);
这句话类似2.3的作用,加载数据
achartengine基本上就是这些,掌握这几种方法就很容易了,其他柱状图、饼状图等就可以举一反三了。完整代码在这里下载http://download.csdn.net/detail/haing1/8322509