最有效的方式从mplfinance回复烛台ohlc

2024-09-30 01:21:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在tkinter GUI中有一个pyplot图形,我正在尝试使用实时数据每秒更新candlestick_ohlc绘图

mySubplot = myFigure.add_subplot(111)

然后用新数据每秒运行一次

mySubplot.clear()
...
repeat all axis formatting 
...
candlestick_ohlc(mySubplot, myData.values)

这是非常缓慢的重新格式化我的轴和重画每一支蜡烛时,它只是最近的蜡烛改变

最有效的方法是什么


Tags: 数据add图形绘图tkinterguirepeatclear
2条回答

我建议使用新的mplfinance API(mpf.plot()而不是candlestick_ohlc())。就处理而言,它可能不会更有效(尽管我怀疑它会更有效),但就您必须编写的代码量而言,它肯定更有效,因为新API为您做了大量matplotlib格式化和其他工作

我建议,在新的API中使用动画支持功能,使用“外部轴模式”。这将允许您与tkinter进行交互。有关mplfinance中动画的一般示例,请参见https://github.com/matplotlib/mplfinance/blob/master/markdown/animation.md及其链接(例如https://github.com/matplotlib/mplfinance/blob/master/examples/mpf_animation_demo2.py)。我认为您将能够调整这些示例中的代码,使其符合使用tkinter执行相同操作的需要

就我个人而言,我不会用Tkinter和MPLfinance来做这件事

这是因为:

  1. Tkinter的帧速率非常糟糕,就像我说的绝对糟糕一样,通过不断地用while循环改变图像,你将幸运地获得5 fps的帧速率
  2. Tkinter既旧又过时,没有其他流行GUI库(如Qt和GTK)所具有的许多有用功能
  3. MPLfinance是非常密集的,当你经常使用它制作图形时,它生成图形的速度很慢,这使得你的交易平台很慢
  4. 应用程序的文件大小将是巨大的
  5. 数据不会准确

为了使其“实时”运行,我将使用cocurrent并行运行三个函数。futures,一个函数将从api或通过web抓取获取股票/货币/加密的数据(我不建议这样做,因为延迟和延迟将很高),第二个函数将用于制作烛台图,第三个功能是运行循环以保持gui,并在图形更改时不断更新图形的图片

对于GUI,我可能会使用称为pygame的“游戏引擎”,因为它具有更高的fps,因为它设计用于制作游戏,但是这会使应用程序密集,但会使fps更高。如果你在tkinter中这样做,你会看到在图形改变时帧的闪烁,这真的很烦人

相关问题 更多 >

    热门问题