本发明涉及一种时分图的建立方法以及系统。
背景技术:
绘图技术对于股票走势等进行描述,可以非常直观的反应当前规律,但是靠人为的去画,由于更新速度快,因此该制图工作量是非常巨大的,并且在绘图的过程中容易造成主观因素的错误。
技术实现要素:
本发明要解决的技术问题,在于提供一种时分图的建立方法以及系统,大大提高了制图效率。
本发明之一是这样实现的:一种时分图的建立方法,包括如下步骤:
步骤1、以时间为X轴,数据为Y轴,建立两个坐标系,并从服务器的数据库中获取数据源;
步骤2、将所述数据源中的数据与时间一一对应,形成坐标点;
步骤3、在其中一个坐标系中,根据贝塞尔曲线原理绘制相邻两个坐标点之间的直线,并将相邻的直线相互连接形成折线图;
步骤4、在另一个坐标系中根据坐标点作其对应的柱状图;
步骤5、将两个坐标系的X轴合并,即将折线图与柱状图合并;
其中,所述步骤3与步骤4不分前后顺序。
进一步地,所述步骤1中:每间隔t秒从服务器的数据库中获取数据源。
进一步地,所述步骤3进一步具体为:在其中一个坐标系中,根据贝塞尔曲线原理,计算相邻两个坐标点的路径;根据绘图框架,将该路径绘制至坐标系中,之后将相邻的直线相互连接形成折线图。
进一步地,所述步骤4进一步具体为:根据坐标点在另一个坐标系中作点,并将该坐标点的Y取0后作点;将所述两点连线,并将该线加粗,得到该坐标点对应的柱状图,重复该步骤直至所有点的柱状图绘制完成。
本发明之二是这样实现的:一种时分图的建立系统,包括如下模块:
坐标系模块,以时间为X轴,数据为Y轴,建立两个坐标系,并从服务器的数据库中获取数据源;
坐标点模块,将所述数据源中的数据与时间一一对应,形成坐标点;
折线图模块,在其中一个坐标系中,根据贝塞尔曲线原理绘制相邻两个坐标点之间的直线,并将相邻的直线相互连接形成折线图;
柱状图模块,在另一个坐标系中根据坐标点作其对应的柱状图;
完成模块,将两个坐标系的X轴合并,即将折线图与柱状图合并;
其中,所述折线图模块与柱状图模块不分前后顺序。
进一步地,所述坐标系模块中:每间隔t秒从服务器的数据库中获取数据源。
进一步地,所述折线图模块进一步具体为:在其中一个坐标系中,根据贝塞尔曲线原理,计算相邻两个坐标点的路径;根据绘图框架,将该路径绘制至坐标系中,之后将相邻的直线相互连接形成折线图。
进一步地,所述柱状图模块进一步具体为:根据坐标点在另一个坐标系中作点,并将该坐标点的Y取0后作点;将所述两点连线,并将该线加粗,得到该坐标点对应的柱状图,重复该步骤直至所有点的柱状图绘制完成。
本发明具有如下优点:本发明一种时分图的建立方法以及系统,便于实现,并大大提制图效率,减少主观上的错误。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种时分图的建立方法执行流程图。
图2为本发明一种时分图的建立系统的原理图。
图3为本发明具体实施方式的示意图。
具体实施方式
如图1所示,本发明时分图的建立方法,包括如下步骤:
步骤1、以时间为X轴,数据为Y轴,建立两个坐标系,并每间隔t秒从服务器的数据库中获取数据源;
步骤2、将所述数据源中的数据与时间一一对应,形成坐标点;
步骤3、在其中一个坐标系中,根据贝塞尔曲线原理,计算相邻两个坐标点的路径;根据绘图框架,将该路径绘制至坐标系中,之后将相邻的直线相互连接形成折线图;
步骤4、根据坐标点在另一个坐标系中作点,并将该坐标点的Y取0后作点;将所述两点连线,并将该线加粗,得到该坐标点对应的柱状图,重复该步骤直至所有点的柱状图绘制完成;
步骤5、将两个坐标系的X轴合并,即将折线图与柱状图合并;
其中,所述步骤3与步骤4不分前后顺序。
如图2所示,本发明时分图的建立系统,包括如下模块:
坐标系模块,以时间为X轴,数据为Y轴,建立两个坐标系,并每间隔t秒从服务器的数据库中获取数据源;
坐标点模块,将所述数据源中的数据与时间一一对应,形成坐标点;
折线图模块,在其中一个坐标系中,根据贝塞尔曲线原理,计算相邻两个坐标点的路径;根据绘图框架,将该路径绘制至坐标系中,之后将相邻的直线相互连接形成折线图;
柱状图模块,根据坐标点在另一个坐标系中作点,并将该坐标点的Y取0后作点;将所述两点连线,并将该线加粗,得到该坐标点对应的柱状图,重复该步骤直至所有点的柱状图绘制完成;
完成模块,将两个坐标系的X轴合并,即将折线图与柱状图合并;
其中,所述折线图模块与柱状图模块不分前后顺序。
如图3所示,本发明一种具体实施方式:
1.K线图
步骤一:在OC语言中,对于较多数据进行统计分析时,并没有能够直观反映其走势的方法。但是OC语言提供了绘图的相关技术,绘图的方法就是调用OC中提供的API,即可以在展示界面上将文字,图片,点和线等画出来;
步骤二:关于K线图的实现,需要使用贝赛尔曲线(Bezier curve)相关的知识,首先,从服务器端获取到数据源,例如一只股票的相关数据,在不同的时间所对应的指数,基于这些数据,我可以选取一条基准线,比如数据源最开始的那条数据,其他数据均是沿着基准线上下进行波动,对于其他的数据与基准数据的差值,与时间一起组成了坐标点,在x-y的坐标轴中取第一象限和第四象限为画布可进行绘制
步骤三:根据贝赛尔曲线-次公式:B(t)=p0+(p1–p0)*t=(1-t)*p0+p1,t∈[0,1],其中p0和p1就是两个点,这样就可以找到两点之间的直线,在OC中,确定画布层,规定其大小范围,以做边距起点为原点,以时间轴为X轴,以股票指数为Y轴,取出数据源中的点,根据公式计算出其路径path,再使用OC提供的绘图相关的框架Core Graphics,将该路径绘制到坐标系中,然后使不同的路径进行连接,就形成了一幅折线图;
步骤四:在多个数据源的情况下,在该布局下,会有多个折线图,对折线图的颜色,粗细进行区分,以方便可以使不同股票在同一布局下进行比较,这样就形成了一幅K线图;
2.柱状图
步骤一:柱状图是以长方形的长度为变量来表达不同的数据分布。在服务端获取到数据后,例如股票的指数,我可以设置不同的基准,可以以时间作为基准,来比较不同时间段,同一支股票的分布,或者不同的股票在同一时间的分布;
步骤二:对数据源进行解析,例如数据源为同一时间内多支股票的走势,整合这些数据,取出最大值与最小值,根据它们算出偏移差值,然后根据以设置的坐标系的参数需要,对数据源处理,进行比例缩放,获得坐标点。
步骤三:根据已获得的坐标点,使用OC方法将其绘制到坐标系中,然后将该坐标点Y取0,获得新的坐标点,并对两个坐标点进行连线,然后使用核心绘画中的加粗方法对该直线进行加粗,用渲染方法进行着色,使用layer(层)方法,对其边沿进行绘制,然后对不同的坐标点以此方法绘制,即可获得一幅柱状图;
3.分时图
步骤一:分时图是一种股票的实时走势图,每个一段时间,最好5s以内,从服务端请求数据
步骤二:分时图是由K线图和柱状图组合而成,对两条K线图进行渲染,分别为白色和黄色,而柱状图则分别渲染为红色,绿色,黄色
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。