收藏 分销(赏)

mplfinance动态K线图的实现.pdf

上传人:自信****多点 文档编号:846798 上传时间:2024-03-29 格式:PDF 页数:4 大小:2.11MB
下载 相关 举报
mplfinance动态K线图的实现.pdf_第1页
第1页 / 共4页
mplfinance动态K线图的实现.pdf_第2页
第2页 / 共4页
mplfinance动态K线图的实现.pdf_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2023年12 月计算机应用文摘第39 卷第2 4期mplfinance动态K线图的实现刘华煜(洛阳师范学院数学科学学院,河南洛阳47 19 34)摘要:虽然mplfinance提供了便捷的K线图绘制功能,但其仅包含基本的K线图绘制函数,缺乏支持用户与K线图之间各种交互的功能。通过对键盘事件和鼠标事件的响应,用户可以利用键盘执行K线图的缩放和平移操作,通过移动鼠标查看特定位置的数据,从而实现与K线图的互动。关键词:mplfinance;K线图;matplotlib事件LIU Huayu中图法分类号:TP311Implementation of dynamic candlestick chart

2、 in mplfinance(School of Mathematical Science,Luoyang Normal University,Luoyang,Henan 471934,China)Abstract:Although mplfinance can conveniently plot candlestick charts,it only provides basicfunctions for drawing candlestick charts and lacks various interactions between users and the chart.By respon

3、ding to keyboard and mouse events,users can zoom in and out or pan the chart using thekeyboard,and view data related to the mouse position by moving the mouse,thus achievinginteraction between users and the candlestick chart.Key words:mplfinance,candlestick chart,matplotlib event1引言mplfinance是一款基于Py

4、thon的财务数据可视化库,可方便绘制股票K线图1。然而,它仅提供基本的K线图绘制功能,无法实现常见的缩放和平移操作,也无法随着鼠标移动实时显示相应位置的数据。通过处理mplfinance的键盘事件,可以使用上下箭头键执行K线图的放大和缩小,以及使用左右箭头键执行K线图的平移。通过对mplfinance 的鼠标事件进行处理,可以实时显示鼠标所在位置的数据。2 matplotlib 事件因为mplfinance 的底层是matplotlib,所以mplfinance事件实质上是matplotlib事件。与标准GUI事件相比,matplotlib事件提供更丰富的事件信息,包括事件发生在哪个Axes

5、等详细信息2 所有matplotlib事件都继承自基类matplotlib.backend_bases.Event,其中最重要的属性是name属性,表示事件的名称。键盘事件KeyEvent类和鼠标事件MouseEvent类都继承自LocationEvent类。LocationEvent类的x和y属性表示鼠标距离画布左下角的距离(以像素为单文献标识码:A位),而 inaxes属性表示鼠标所在的Axes 实例(如果有)。此外,xdata 和ydata属性表示鼠标所在位置的数据坐标。例如,如果鼠标位置在第0 个数据(数据从0 开始)和第1个数据的正中间,那么事件的xdata属性值将为0.5。对于键盘

6、事件KeyEvent类而言,除了继承自LocationEvent的属性,还有一个key属性,表示按下的是哪个键。对于鼠标事件MouseEvent类而言,除了继承自LocationEvent 的属性,还有其特有的属性,其中最重要的是button属性,表示按下的是哪个鼠标键。在matplotlib中,要在事件发生后执行一段代码,需要使用mpl_connect函数。其用法如下:fig.canvas.mpl_connect(eventname,eventfunc)其中,fig是已创建的图形,eventname 是事件名,而eventfunc 是函数名。mpl_connect 的功能是在fig 指定的图

7、形上,当eventname事件发生时执行eventfunc函数。通常而言,eventfunc函数带有一个event参数,用于携带事件信息。对于鼠标而言,事件名 button_press_event表示鼠标按下事件,事件名button_release_event表示鼠标抬起事件,而事件名motion_notify_event表示鼠标移动事件。对于键盘而言,事件名key_press_event表示键盘按下事72件,事件名key_release_event表示键盘抬起事件。mpl_connect函数的示例代码如下:def f(event):print(event.x)fig.canvas.mpl_c

8、onnect(“button_press_event,f)执行这段代码后,当用户在fig指定的图形上单击时,将触发f函数,进而输出鼠标所在位置距离 fig左边的距离(以像素为单位)。3绘制静态K线图要使用mplfinance绘制K线图,需要事先准备股票数据。这些数据必须是DataFrame类型,包含列名为 date,open,high,low,close 列,其中 date 是索引列。如果要绘制成交量图,数据还必须包含volume列。以下以中国石油(代码sh.601857)2 0 2 0 年和2021年的数据为例进行绘图,假设数据已存储在名为stockdata 的DataFrame 中,则使用

9、mplfinance 绘制静态K线图的代码为:fig=mpf.figure(figsize=(5,5)ax1=fig.add_subplot(2,1,1)ax2=fig.add_subplot(2,1,2)mpf.plot(stockdata,type=“candle,ax=axl,volume=ax2)mpf.show()其中,axl表示K线图区域,而 ax2表示成交量图区域。运行该代码后生成的图形如图1所示。Figure16n-022020-Jun-06004002004K线图的缩放K线图包含的数据较多有利于观察股票的整体走势,而包含的数据较少则有利于观察股票短期内的涨跌趋势。因此,根据用

10、户的不同需求,经常需要对计算机应用文摘K线图进行缩放操作。为了实现缩放功能,首先需要定义两个变量:vtotal表示当前视图内的数据量,vstart表示当前视图从哪个数据开始。由于初始的K线图包括所有数据,vtotal的初始值为数据总量,vstart的初始值为0。由于引人了缩放功能,将绘制K线图的代码封装成replot函数,其代码如下所示:def replot():ax1.clear()ax2.clear()mpf.plot(stockdata.iloc vstart:vstart+vtotal ,type=candle,ax=axl,volume=ax2)mpf.show()如果不清除原来的K

11、线图,执行mpf.plot后K线图不会有任何更改。因此,在这里需要调用clear函数清除原有的K线图。清除原图后,再执行mpf.plot函数,绘制以vstart为起始数据、数据量为vtotal的K线图。假设通过向上箭头键执行放大功能,向下箭头键执行缩小功能。由于这涉及键盘事件,需要先定义键盘事件处理函数。以下是键盘事件处理函数的代码:def keypress(event):global vstart,vtotalif event.key=up:if vtotaltotal:n-04vtotal=total2020-Nov-02021-Mar-31图1静态K线图2023年第2 4期if vsta

12、rttotal-vtotal:vstart=total-vtotalreplot()通过将vtotal折半来放大K线图,如果vtotal太小(此处定义为小于或等于10),则认为无需放大,直接结束函数。通过将vtotal加倍来缩小K线图,如果加倍后vtotal大于总数据量,则调整vtotal为总数据量。如果从起始数据到最后一个数据的数据量小于加倍后的vtotal,则将起始数据向前调整到合适的位置。完成vstart和vtotal的调整后,调用replot函数重新绘制K线图。最后,将这个函数与键盘单击事件绑定,绑定的代码如下:2023年第2 4期fig.canvas.mpl _ connect(ke

13、y-press _ event,keypress)放大数次后的K线图如图2 所示。Figure1-6.05.55.04.5Jan400901200小Q车日图2 放大数次后的K线图5K线图的平移假设通过向左箭头键执行向左平移,向右箭头键执行向右平移。由于这是键盘事件,需要在之前定义的键盘事件处理函数中添加对向左/右箭头的处理。相关代码如下:def keypress(event):elif event.key=left:vstart-=int(vtotal/4)if vstarttotal-vtotal:vstart=total-vtotalreplot()通过调整vstart来实现K线图的平移,

14、其中增加或减小的幅度为当前视图内数据量的四分之一。如果vstart减小后小于0,则将vstart设为0;如果vstart增加后导致从起始数据到最后一个数据的数据量小于当前视图内数据量,则将vstart向前调整到合适的位置。6显示鼠标所在位置数据用户通常希望随着鼠标移动,能够实时显示鼠标计算机应用文摘所在位置的数据。为实现这一功能,需要处理鼠标移动事件。在鼠标移动时,K线图上方会显示两行文本。口X90od-21JanFebFebzo uer2FebFeb273mplfinance 通过 text函数来显示文本。由于每次使用text函数显示文本,前后显示的文本会叠加在一起,导致显示上的混乱。因此,

15、需要一开始通过text函数建立文本,然后通过set_text函数来更改文本内容,这样就能避免更改前后文本叠加在一起的情况。以下是建立这两行文本的代码:tl=fig.text(0.1,0.95,fontname=simhei)t2=fig.text(0.1,0.9,fontname=simhei)在mplfinance 中,显示文本时所使用的坐标系以左下角为原点,轴向上为正方向,轴向右为正方向,刻度以宽度或高度为1。例如,坐标(0.1,0.9)表示横向距左边为宽度的十分之一,纵向距下边为高度的十分之九(即距上边为高度的十分之一)。Mar由于文本中包含汉字,需要将其字体设置为黑x=Feb 19 y

16、=1.38e+08体。如果不设置字体,汉字可能无法正确显示。Figure1口X2021-05-31高:4.6 6 低:4.6开盘:4.6 6收盘:4.6 2 成交量:8 8 40 6 417.065490T600400200以下是鼠标移动处理函数mousemotion 的代码:def mousemotion(event):if event.inaxes!=axl:returnx=int(event.xdata+0.5)if xvtotal-1:x=vtotal-1if x0:x=0 x+=vstart-02小Q图3鼠标所在位置各项数据图(下转第7 6 页)76展、社会进步的双赢局面。随着“互联

17、网+”的发展,应将大数据作为重点,加强“利用微服务进行解耦”的实施,消除“信息孤岛”的现象,构建一个统一的数据中心,消除不同高校的馆藏资源之间的差距。3.3加强安全技术应用为了确保图书馆的数据安全,高校图书馆应采用安全性高、技术成熟的操作系统和应用程序。其中,高校图书馆应采取有效措施,包括定期安装防火墙、更新防病毒软件、修复系统漏洞、删除不必要的应用软件、关闭不常用的端口等,以确保图书馆的网络和服务器的安全。为确保应用程序的正常运行,高校图书馆应定期对其进行更新和升级。此外,应加强密码管理、机房管理和安全保密等方面的制度建设,并严格落实安全管理责任制。为确保系统安全和数据安全,高校图书馆必须严

18、格执行各项规定,加强管理,严肃问责。此外,还要加强图书馆工作人员的安全意识培养和安全技能培训,明确责任,加强保障,严格执行,以消除安全隐患,努力建设一个安全、健康的图书馆网络。3.4提高馆员素质在“互联网+”时代,高校图书馆面临巨大挑战,如何克服困难、避免被边缘化,是图书馆工作者必须认真对待的问题。为了应对这些挑战,高校图书馆必须顺应时代发展,不断改革,扩大服务范围,以适应新的(上接第 7 3 页)cur_date=stockdata.iloc x.name.date()cur=stockdata.ilocx value=event.ydatatl.set_text(f/cur_date低:(

19、cur.low)t2.set_text(f开盘:1cur.opencur.close成交量:1cur.volume)mpf.show()首先,判断鼠标是否在K线图范围内。如果不在K线图范围内,则无需处理,直接结束函数。其次,根据event.xdata确定鼠标所在数据在K线图内的位置。然后,将自加vstart,使的值表示鼠标所在数据的位置。最后,通过tl 和t2的set_text 函数更改两行文本的内容。最终,将mousemotion 函数与鼠标移动事件进行绑定。绑定的代码如下:fig.canvas.mpl_ connect(motion_ notify _ event,计算机应用文摘形势。高校

20、图书馆工作人员应不断调整思维方式,跟上时代步伐,坚持“读者第一,服务至上”的原则,积极面对新的挑战,主动承担新的使命,自觉适应新的要求,并熟练掌握现代网络信息的处理和使用技巧。高校图书馆应持续提升责任感、凝聚力,致力于构建一个以读者需求为导向、以馆藏资源为基础、以网络技术为支撑、以用户满意度为核心的文化生态系统。4结束语如今,随着“互联网+”时代的到来,各行各业不断变革,以满足当下的社会需求。在“互联网+”时代,绿色网络的出现标志着人们期望构建一个更加文明、安全、健康的社会环境。高校图书馆应积极推动绿色健康网络的建设,以满足师生及其他社会群体的需求,并更好地推动学校的发展,使图书馆成为学校发展

21、的重要助推器。参考文献:1 王海燕.网络环境下高校图书馆信息资源建设与服务J.内蒙古科技与经济,2 0 18(7):9 4-9 6.2曹慧芳.互联网时代高校图书馆数字化资源建设与利用研究J.江苏科技信息,2 0 2 0(3):11-14.作者简介:张冬丽(19 7 4一),本科,馆员,研究方向:图书馆学。mousemotion)随着鼠标移动,K线图上方会实时显示鼠标所在位置的数据,效果如图3所示。高:i cur.high 7结束语mplfinance本身仅支持绘制静态K线图。通过编收盘:写处理键盘事件和鼠标事件的代码,成功实现了动态K线图。基于此,用户能够灵活地与K线图进行各种交互,mplfinance 为其做出决策提供了便利。参考文献:1 袁霄.python股票量化交易从人门到实践M.北京:人民邮电出版社,2 0 2 1.2刘大成.python数据可视化之matplotlib精进M.北京:电子工业出版社,2 0 19.作者简介:刘华煜(19 7 6 一),硕士,讲师,研究方向:计算机应用。2023年第2 4期

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      联系我们       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服