Android 实时曲线图/折线图
基于开源框架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() {@Overridepublic void run() {ArrayList<Integer> datas = new ArrayList<Integer>();for (int i = 0; i < 1; i++) {datas.add(random.nextInt(2000)+500);}ArrayList<Integer> datas2 = new ArrayList<Integer>();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<Integer> 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<Integer> datas) {for (int addY : datas) {series2.add(i2, addY);i2++;}chart.repaint();}
想要源码的留下邮箱
Android 实时曲线图/折线图相关推荐
- echarts折线图怎么从y轴开始_基于echarts的双y轴实时更新折线图
一款基于echarts的双y轴实时更新折线图效果,页面加载后开始自动更新数据并绘制对应的折线图,可以点击右上角的按钮:显示数据视图.刷新数据和将数据存储为png的图片. 查看演示 下载资源: 46 次 ...
- layui做折线图_绘制曲线图/折线图只需4步
绘制曲线图/折线图只需4步 8390251284.gif 下载YJGraph文件拖入工程后 1.导入头文件 #import "YJGraphView.h" #import &quo ...
- Python基于周立功盒子接收特定报文信号并实时绘制折线图(二)
Python基于周立功盒子接收特定报文信号并实时绘制折线图(二) 一.背景 根据在上一篇文件Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)的基础上需要做一些优化,原因是,因为 ...
- Python基于周立功盒子接收特定报文信号并实时绘制折线图(一)
Python基于周立功盒子接收特定报文信号并实时绘制折线图(一) 一.背景 为了节省成本,最大限度利用资源,放弃了用Vector的盒子,采用周立功盒子来做二次开发,以方便来进行压力测试 二.需 ...
- android时间轴折线图,echarts时间轴折线图
当使用echarts折线图时,每个数据会打点,在数据量小的时候,美观又快捷,但是当数据量过大时,会非常的卡,以及不美观 例如: series: { symbol:'circle', } > EC ...
- android客户端动态折线图
1.添加依赖 compile 'com.github.PhilJay:MPAndroidChart:v3.0.2' 2.在布局文件中添加RelativeLayout,相当于一个容器,目的是可以在界面动 ...
- android记账本折线图_Android自定义View - 仿支付宝月账单折线图
前言 支付宝有个查看月账单的功能,最近一直在学习自定义View,于是就尝试着自己实现了一个类似的折线图. 下面是支付宝消费分析功能截图和自己实现的折线效果截图: 支付宝消费分析折线图.jpg 效果1. ...
- android 多个折线图 最佳视野,自定义View_撸一个多层折线图
看到这个标题,可能有点发懵,啥叫多层折线图啊?这个是我自己取的名字,是因为那天我遇到了这样一个需求. UI图.png 呐!这还是一个宝塔型的折线图,根据常识,很容易就知道这里面的交互逻辑:一指多控.曾 ...
- Android studio 绘制折线图
1.在项目的build.gridle里面的allprojects添加 maven { url "https://jitpack.io" } llprojects {reposito ...
最新文章
- 块代码编程---开始使用块代码
- linux c 函数 link symlink unlink 链接相关功能
- 如何避免fstab挂载故障问题
- AsyncHttpClient的连接池使用逻辑
- 微信昵称上标电话号码,实用的新玩法
- 20145120 《Java程序设计》实验一实验报告
- 实验一:端口扫描(X-scan)
- Matlab中CIC滤波器的应用
- 51单片机驱动TM1640实现多个LED灯控制
- matlab积分器,MATLAB_SIMULINK__积分器相关操作
- 【74HC595】STM32 74HC595驱动程序
- c#语言猜数字游戏,C#实现简易猜数字游戏
- 12星座谈恋爱:说分手,很容易
- 解决DedeCMS搜索结果每页显示10条无法修改方法
- 批量创建工作表并以本月日期命名——《超级处理器》应用
- RK3588 调试 phy
- 【C语言】转义字符\xhh和\ddd到底如何判断?被兔子个数支配的恐惧你也有吗?(每日小细节001)
- 一文读懂程序化交易算法交易量化投资高频交易统计利
- STM32_基础入门(三)_库函数按键实验
- 情绪分析,词性分析和词义消歧