如何在android的程序中画折线图

   1. 首先下载achartengine.jar包并成功导入工程当中。

方法:需要画折线图的工程,右击工程,build path->add libraries->user libraries点击next->点击user libraries->点击new->起个名字然后点击ok,选中新建的library,点击add jars,添加下载的achartengine.jar即可。

 2.在工程的清单文件AndroidManifest.xml中添加<activity android:name="org.achartengine.GraphicalActivity" />这是为了声明折线图

 3.在折线图出现的活动中填写如下代码:

public class MainActivity extends Activity { 
     
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);


        String[] titles = new String[] {"实体1","实体2"};//曲线代表的实体


        List x = new ArrayList();//存放横坐标 
        List y = new ArrayList();//存放纵坐标


        x.add(new double[] { 1, 2, 3, 4, 5, 6,7} );//第一个实体的横坐标 
        x.add(new double[] { 1, 2, 3, 4, 5, 6,7} );//第二个实体的横坐标


        y.add(new double[] { 3.11, 3.45, 3.77, 4.44, 4.00, 4.46,5.00});//第一个实体的纵坐标 
        y.add(new double[] { 3.7, 4.1, 5.00, 3.6, 4.0, 4.6,3.9});//第二个实体的纵坐标


        XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);


        int[] colors = new int[] { Color.RED,Color.GREEN}; //第一个和第二个实体的颜色
        PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.DIAMOND}; //第一个和第二个实体点的形状 
        XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, true);


        setChartSettings(renderer, "标题", "x轴名称", "y轴名称", 0, 20, 0, 5 , Color.BLACK, Color.BLACK);


        View chart = ChartFactory.getLineChartView(this, dataset, renderer);


        setContentView(chart); 
    }


    protected XYMultipleSeriesDataset buildDataset(String[] titles, 
                                                   List xValues, 
                                                   List yValues) 
    { 
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();


        int length = titles.length;                  //有几条线 
         for (int i = 0; i < length; i++) 
        { 
            XYSeries series = new XYSeries(titles[i]);    //根据每条线的名称创建 
              double[] xV = (double[]) xValues.get(i);                 //获取第i条线的数据 
              double[] yV = (double[]) yValues.get(i); 
            int seriesLength = xV.length;                 //有几个点


              for (int k = 0; k < seriesLength; k++)        //每条线里有几个点 
              { 
                series.add(xV[k], yV[k]); 
              }


            dataset.addSeries(series); 
        }


        return dataset; 
    }


    protected XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles, boolean fill) 
    { 
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); 
        int length = colors.length; 
        for (int i = 0; i < length; i++) 
        { 
            XYSeriesRenderer r = new XYSeriesRenderer(); 
            r.setColor(colors[i]); 
            r.setPointStyle(styles[i]); 
            r.setFillPoints(fill); 
            renderer.addSeriesRenderer(r); 
        } 
        return renderer; 
    }


    protected void setChartSettings(XYMultipleSeriesRenderer renderer, String title, 
                                String xTitle,String yTitle, double xMin, 
                                double xMax, double yMin, double yMax, 
                                int axesColor,int labelsColor) 
    {        
        renderer.setChartTitle(title);//设置标题文本内容 
        renderer.setLabelsTextSize(15); // 设置轴标签文本大小
        renderer.setLabelsColor(Color.BLACK);
        renderer.setLegendTextSize(20);// 设置图例文本大小
        renderer.setAxisTitleTextSize(20);// 设置坐标轴标题文本大小
        renderer.setChartTitleTextSize(30); // 设置图表标题文本大小
        renderer.setShowGrid(true);//设置是否在图表中显示网格
        renderer.setXLabels(20);//设置X轴显示的刻度标签的个数
        renderer.setYLabels(40);//设置X轴显示的刻度标签的个数
        renderer.setXLabelsColor(Color.BLACK);//设置横坐标刻度的颜色
        renderer.setYLabelsColor(0, Color.BLACK);//设置纵坐标刻度的颜色
        renderer.setRange(new double[]{0d, 5d, 0d, 100d}); //设置chart的视图范围
        renderer.setPanLimits(new double[] { 0, 20, 0, 5.5 });//设置拉动的范围
        renderer.setPointSize(5);//设置点的大小
        renderer.setXTitle(xTitle); //设置x轴的标题
        renderer.setYTitle(yTitle);//设置y轴的标题 
        renderer.setXAxisMin(0); //设置初始化的x轴最小值
        renderer.setXAxisMax(xMax);//设置初始化的x轴最大值 
        renderer.setYAxisMin(0);//设置初始化的y轴最小值 
        renderer.setYAxisMax(5.5);//设置初始化的y轴最大值 
        renderer.setApplyBackgroundColor(true);//设置背景网格
        renderer.setAxesColor(Color.BLACK);//设置坐标轴的颜色
        renderer.setBackgroundColor(0xff96DDF1);//设置背景的颜色
        renderer.setMarginsColor(0xff96DDF1);//设置边缘背景的颜色
    } 
}

//任务结束

ps:网上许多材料对renderer中的方法注释不完整,笔者在这里介绍的详细一些,希望对读者有所帮助。有的读者放映复制代码后会报错,大多都是导包的问题,下面列出所用到的包以便参考。

import java.util.ArrayList; 
import java.util.List;
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.os.Bundle; 
import android.view.View;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值