引言
pyqtgraph是Python平臺上一種功能強大的2D/3D繪圖庫,相對於matplotlib庫,由於其在內部實現方式上,使用了高速計算的numpy信號處理庫以及Qt的GraphicsView框架,因此它在大數據量的處理及快速顯示方面有著天然的優勢,非常適合於需要快速繪圖更新、視頻或實時交互性的操作場合,在數學、科學和工程領域都有著廣泛的應用。
對於pyqtgraph繪圖庫,前面已經寫了幾篇文章介紹了該庫的基本使用方法,包括如何連續刷新波形圖、如何逐點刷新波形圖、如何顯示多幅多條曲線及如何自定義坐標軸字符信息等內容,詳細請參考前面的文章。
這次給大家介紹一下如何使用該庫繪製股票k線圖。
K線圖介紹
對於股票交易者來講,K線圖是弄清股票一段時間走勢的一種最基本的圖形工具,K線分為陽線和陰線,陽線和陰線都包含了開盤價、收盤價、最高價和最低價,一般K線如下圖所示:
當收盤價大於開盤價時,稱為陽線,在圖形上一般用紅色表示,反之,當收盤價低於開盤價時,稱為陰線,在圖形上一般用綠色表示。由於其形狀頗似一根根蠟燭,K線圖有時也叫做蠟燭圖。
實例說明
對於某股票,仿真一段時間內每天的開盤價、收盤價、最高價和最低價數據,繪製其K線圖趨勢。其運行界面如下圖所示:
在上圖中,繪製了某股票7天的交易信息,通過該圖,可以清晰看到每天的開盤價、收盤價、最高價和最低價數據信息,通過顏色也可以看出開盤價及收盤價的大小關係。
編程思路
在pyqtgraph繪圖庫中,其內部實現方式上採用了Qt的圖形視圖框架結構,每個小部件都是一個繼承於QGraphicitem類的圖形項,因此,可以自定義一個顯示K線圖的小部件類CandlestickItem,在類中重新實現兩個方法函數「paint」和「boundingRect」即可。
K線圖部件CandlestickItem定製完成後,將其添加到主顯示窗口中,進而完整顯示股票的K線圖信息。
另外,其K線圖的橫坐標一般為時間,需要單獨自定義橫坐標的信息。
部件類CandlestickItem的實現
K線圖部件CandlestickItem類的實現代碼如下圖所示:
其主要代碼解釋如下:
(1)第18-21行,類的初始化代碼,傳入data參數,該參數包含了每天的股票數據,其類型為一列表,其每個元素為一元組,包含了股票的time、open、close、min、max等信息。
(2)第23-31行,生成K線圖的圖片picture,在初始化函數中調用一次。
(3)第33-34行,在paint函數中繪製K線圖圖片picture信息。
(4)第36-37行,在boundingRect函數中根據圖片picture的邊界大小定義該部件的大小信息。
完整的測試代碼
調用上面的部件類,完整測試代碼如下圖所示:
其主要代碼解釋如下:
(1)第15行,創建應用程式實例app。
(2)第39-47行,產生仿真的每日的股票數據,包括股票的time、open、close、min、max等信息。
(3)第48行,定義K線圖部件實例item。
(4)第50-52行,定義橫坐標軸實例myAxis,將坐標軸數值信息轉換為日期信息。
(5)第54-56行,創建一個圖形顯示窗口win,設置窗口標題、窗口大小等屬性。
(6)第58-62行,在win上添加一個畫圖對象p,設置坐標軸為myAxis,添加K線圖部件實例item,並設置X、Y軸標題、圖形標題等信息。
(7)第64行,使用app.exec_()函數運行實例,進入消息循環。
運行上面代碼後,就會出現本文開始的提到的運行界面圖。
總結
通過本例可以看出,在Python中使用pyqtgraph繪圖庫繪製股票K線圖,相對來說還是比較簡單的。通過本例可以學到的關於pyqtgraph繪圖庫編程的知識點包括:
(1)如何自定義繪圖部件。
(2)如何自定義坐標軸信息。
如果你覺得這篇文章對你有用的話,關注+收藏+點讚吧。