Android 实时曲线图/折线图 您所在的位置:网站首页 画曲线图的app Android 实时曲线图/折线图

Android 实时曲线图/折线图

#Android 实时曲线图/折线图| 来源: 网络整理| 查看: 265

基于开源框架AChartEnginee绘制图表表格,实现显示数据折线图,对比功能。效果图如下:

新建工程

通过Android studio新建项目,添加achartenginee.jar依赖。点击下载jar

初始化图表 数据集

根据需求设置多条曲线,一条曲线对应一个XYSeries实例

series = new XYSeries(title); series2 = new XYSeries("123"); // 创建一个数据集的实例,这个数据集将被用来创建图表 mDataset = new XYMultipleSeriesDataset(); // 将点集添加到这个数据集中 mDataset.addSeries(series); mDataset.addSeries(series2);

属性样式

设置曲线样式,这里要注意,一条曲线执行一次如下设置,以顺序相互对应,否则将会报错:Datasetand renderer should not be null  andshould have the same number of series

XYSeriesRenderer r = new XYSeriesRenderer(); // 设置图表中曲线本身的样式,包括颜色、点的大小以及线的粗细等 r.setColor(color); r.setPointStyle(style); r.setFillPoints(fill); r.setLineWidth(3); renderer.addSeriesRenderer(r); 设置图表样式

// 有关对图表的渲染可参看api文档 renderer.setApplyBackgroundColor(true); renderer.setBackgroundColor(getResources().getColor( R.color.black)); renderer.setChartTitle(title); renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(19);// 设置坐标轴标签文字的大小 renderer.setXTitle(xTitle); renderer.setYTitle(yTitle); renderer.setXAxisMin(xMin); renderer.setXAxisMax(xMax); renderer.setYAxisMin(yMin); renderer.setYAxisMax(yMax); //renderer.setYAxisAlign(Align.RIGHT, 0);//用来调整Y轴放置的位置,表示将第一条Y轴放在右侧 renderer.setAxesColor(axesColor); renderer.setLabelsColor(labelsColor); renderer.setShowGrid(true); renderer.setGridColor(Color.GRAY); renderer.setXLabels(10);//若不想显示X标签刻度,设置为0 即可 renderer.setYLabels(10); renderer.setLabelsTextSize(18);// 设置坐标轴标签文字的大小 renderer.setXLabelsColor(labelsColor); renderer.setYLabelsColor(0, labelsColor); renderer.setYLabelsVerticalPadding(-5); renderer.setXTitle(""); renderer.setYTitle(""); renderer.setYLabelsAlign(Align.RIGHT); renderer.setAxisTitleTextSize(20); renderer.setPointSize((float) 1); renderer.setShowLegend(false); renderer.setFitLegend(true); renderer.setMargins(new int[] { 30, 45, 10, 20 });// 设置图表的外边框(上/左/下/右) //表格边框颜色 renderer.setMarginsColor(getResources().getColor( R.color.cardio_bg_color));

显示数据

这里我们是模拟实时数据,通过handler递归调用不断获取新数据

Runnable runnable = new Runnable() { @Override public void run() { ArrayList datas = new ArrayList(); for (int i = 0; i < 1; i++) { datas.add(random.nextInt(2000)+500); } ArrayList datas2 = new ArrayList(); for (int i = 0; i < 1; i++) { datas2.add(random.nextInt(2000)+500); } updateCharts(datas); updateChartsMoreLine(datas2); handler.postDelayed(this, POINT_GENERATE_PERIOD); } }; protected void updateCharts(ArrayList datas) { for (int addY : datas) { series.add(i, addY); i++; } if (i < MAX_POINT) { renderer.setXAxisMin(0); renderer.setXAxisMax(MAX_POINT); } else { renderer.setXAxisMin(series.getItemCount() - MAX_POINT); renderer.setXAxisMax(series.getItemCount()); } chart.repaint(); } protected void updateChartsMoreLine(ArrayList datas) { for (int addY : datas) { series2.add(i2, addY); i2++; } chart.repaint(); }

想要源码的留下邮箱



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有