一种数据图绘制和缩放方法、系统和存储介质技术方案

技术编号:38092629 阅读:11 留言:0更新日期:2023-07-06 09:05
本发明专利技术提出一种数据图绘制和缩放方法,包括以下步骤:获取数据并保存为一维数组y[],数据为等间隔数据;根据数组绘制数据图并判断数据图在屏幕上的滑动方向:如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的多个屏幕显示范围;如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的多个屏幕显示范围。上述方案通过对数据图数据进行实时计算,仅绘制当前显示设备屏幕显示范围内的数据图,并根据数据图的滑动方向预绘制部分将要显示的数据图,从而显著提高数据图的绘制效率。显著提高数据图的绘制效率。显著提高数据图的绘制效率。

【技术实现步骤摘要】
一种数据图绘制和缩放方法、系统和存储介质


[0001]本申请属于数据处理
,具体涉及一种数据图绘制和缩放方法、系统和存储介质。

技术介绍

[0002]在数据统计、数据处理及数据图形化过程中,经常需要处理一类以具有固定间隔的序列数据,例如音频波形图、电信号波形图等各类时间序列数据图。绘制这类等间隔的数据图时,通常将数据点沿x轴均匀分布,x值是按某一固定的绘制步长T递增的,y的值使用一个一维数组y[]来存储,如y[0]=a0,y[1]=a1,y[2]=a2
……
y[n]=an。取值时,定义一个初始值为0的数组下标变量i,通过一个循环使变量i每次自增1,即i=1、2、3
……
n,则每经过一次循环,可获得相应的x和y的值,x=i
×
T,y=y[i],逐个获得坐标点(x,y)后,并将所有坐标点依次按要求相连即可得到数据图,并由终端设备屏幕展示。
[0003]对于上述数据图的数据处理和数据图绘制,部分终端采用直接生成完整数据图并加载的方式,在数据量较大的情况下,可能出现数据加载缓慢、卡顿的情况,在屏幕上显示时,可能会出现白屏的情况,甚至引起内存溢出的异常(OOM,Out Of Memory)。针对上述问题,以安卓系统的终端为例,其常采用的手段及存在的问题包括:
[0004]1、关闭硬件加速,通过关闭硬件加速,可以显示更大的图片,但图片尺寸依然不能超过一定的限制,并且关闭硬件加速后,会导致app运行卡顿,影响用户体验;
[0005]2、使用WebView加载渲染,但当图片内存达到MB级别时,WebView同样会崩溃,无法正常绘制超长数据图;
[0006]3、使用可对图片指定矩形区域进行解码并显示的工具类,可分块加载图片,例如BitmapRegionDecoder等第三方API,但这类工具需要与设备适配,缺乏通用性。

技术实现思路

[0007]针对上述问题,本专利技术第一方面提出一种数据图绘制和缩放方法,包括以下步骤:
[0008]获取数据并保存为一维数组y[],数据为等间隔数据;
[0009]根据数组绘制数据图并判断数据图在屏幕上的滑动方向:如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的多个屏幕显示范围;如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的多个屏幕显示范围。
[0010]上述方案通过对数据图的数据进行实时计算,仅绘制当前显示设备屏幕显示范围内的数据图,并根据滑动方向预绘制部分将要显示的数据图,从而显著提高数据图的绘制效率。
[0011]进一步地,如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的至少两个屏幕显示范围。
[0012]进一步地,如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范
围内和当前屏幕显示范围左右两侧的各至少一个屏幕显示范围。
[0013]进一步地,基于系统控件绘制数据图,绘制坐标y_view[i]=viewHeight

scaleY*y[i],其中viewHeight为控件高度,scaleY为控件高度viewHeight与数据图的最大数据yMax之比,y[i]为一维数组中的第i个数据。
[0014]进一步地,如果数据图向屏幕左侧滑动,则绘制数据图的起点下标startIndex_L=scrollX/T,结束下标endIndex_L=startIndex+n1*screenWidth/T;如果数据图向屏幕左侧滑动,则绘制数据图的起点下标startIndex_R=startIndex_L

n2*screenWidth/T,结束下标endIndex_R=startIndex+n3*screenWidth/T,其中scrollX为横向滚动控件的横向滚动偏移量,screenWidth为屏幕宽度,n1、n2、n3均大于等于1。
[0015]进一步地,还包括步骤:记录缩放比例scale,根据缩放比例scale缩放数据图。
[0016]优选地,根据缩放比例scale改变步长T。
[0017]优选地,根据缩放比例scale改变绘制下标增量。
[0018]本专利技术第二方面提出一种数据图绘制和缩放系统,包括:
[0019]数组存储模块:获取数据并保存为一维数组y[],数据为等间隔数据;
[0020]数据图绘制模块:配置用于根据数组绘制数据图并判断数据图在屏幕上的滑动方向:如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的多个屏幕显示范围;如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的多个屏幕显示范围。
[0021]本专利技术第三方面提出一种用于数据图绘制和缩放计算机可读存储介质,其上存储有一或多个计算机程序,该一或多个计算机程序被计算机处理器执行时实施如第一方面所述的任一方法。
[0022]本专利技术提出一种的数据图的绘制和缩放方法和系统,由于使用了分段处理的方式,仅需同时绘制稍大于屏幕显示范围的数据图,在处理数据量较大的超长数据图时,对比一次性绘制整个数据图的方式,可以有效避免设备因内存不足造成的内存溢出(OOM)问题,同时能够保证图形显示的流畅性。
附图说明
[0023]附图帮助进一步理解本申请。附图的元件不一定是相互按照比例的。为了便于描述,附图中仅示出了与本专利技术相关的部分。
[0024]图1为本专利技术一实施例中数据图绘制和缩放方法流程示意图;
[0025]图2为本专利技术另一实施例中当屏幕向左滑动时的绘制分段示意图;
[0026]图3为本专利技术另一实施例中当屏幕向右滑动时的绘制分段示意图;
[0027]图4为本专利技术另一实施例中将y轴起点坐标设为控件高度时绘制的数据图示意图;
[0028]图5为现有技术中以控件左上角为坐标原点绘制的数据图示意图;
[0029]图6为本专利技术另一实施例中数据图绘制和缩放系统示意图。
具体实施方式
[0030]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释相关专利技术,而非对该专利技术的限定。
[0031]图1为根据本专利技术第一方面的一实施例中数据图绘制方法流程示意图,其中包括:
[0032]S1,获取数据并保存为一维数组y[],数据为等间隔数据。其中,等间隔数据是指具有固定间隔的序列数据,例如音频波形图、电信号波形图等各类时间序列数据图。
[0033]S2,根据数组绘制数据图并判断数据图在屏幕上的滑动方向:如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的多个屏幕显示范围;如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的多个屏幕显示范本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据图绘制和缩放方法,其特征在于,包括以下步骤:获取数据并保存为一维数组y[],所述数据为等间隔数据;根据所述数组绘制数据图并判断数据图在屏幕上的滑动方向:如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的多个屏幕显示范围;如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的多个屏幕显示范围。2.根据权利要求1所述的数据图绘制和缩放方法,其特征在于,如果数据图向屏幕左侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围右侧的至少两个屏幕显示范围。3.根据权利要求1所述的数据图绘制和缩放方法,其特征在于,如果数据图向屏幕右侧滑动,则绘制数据图的范围为当前屏幕显示范围内和当前屏幕显示范围左右两侧的各至少一个屏幕显示范围。4.根据权利要求1所述的数据图绘制和缩放方法,其特征在于,基于系统控件绘制数据图,绘制坐标y_view[i]=viewHeight

scaleY*y[i],其中viewHeight为控件高度,scaleY为控件高度viewHeight与数据图的最大数据yMax之比,y[i]为一维数组中的第i个数据。5.根据权利要求4所述的数据图绘制和缩放方法,其特征在于,如果数据图向屏幕左侧滑动,则绘制数据图的起点下标startIndex_L=scrollX/T,结束下标endIndex_L=startIndex+n1*screenWidth/...

【专利技术属性】
技术研发人员:赵权李科军
申请(专利权)人:昆明领飞科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1